是否可以检测用户何时切换标签?

时间:2011-01-17 17:45:38

标签: internet-explorer firefox google-chrome browser firefox-addon

特别是,我很想知道是否可以将用户的点击捕获到其他浏览器标签。我从技术上讲,我可以得到窗口对象的模糊和焦点,但是如果有更紧密地与浏览器(IE,FF,Chrome等)相关联的东西会更好。

1 个答案:

答案 0 :(得分:4)

<强> IE

如果您正在编写本机代码(即浏览器插件),则可以使用DWebBrowserEvents2::WindowStateChanged

以下是您的IDispatch::Invoke()实施的一些示例代码:

    // DWebBrowserEvents2
    case DISPID_WINDOWSTATECHANGED: {
        if (pDispParams) {
            DWORD dwMask  = pDispParams->rgvarg[0].lVal;
            DWORD dwFlags = pDispParams->rgvarg[1].lVal;

            // We only care about WINDOWSTATE_USERVISIBLE.
            if (dwMask & OLECMDIDF_WINDOWSTATE_USERVISIBLE)
            {
                bool visible = !!(dwFlags & OLECMDIDF_WINDOWSTATE_USERVISIBLE));

                // ... your code here ...
            }
        }
        break;
    }

没有明确的事件发送到页面的Javascript,但模糊事件可能会做你想要的。

<强>火狐

在Firefox中,您可以通过为TabAttrModified添加事件侦听器并检查selected属性来检测XUL中的标签更改。请参阅MDC documentation for the dealing with the Tabbed Browser