【发布时间】:2011-06-10 14:36:34
【问题描述】:
特别是,我很想知道是否可以捕获用户对不同浏览器选项卡的点击。我想从技术上讲,我可以获得窗口对象的模糊和焦点,但如果有一些与浏览器(IE、FF、Chrome 等)更紧密相关的东西,那就更好了。
【问题讨论】:
标签: internet-explorer firefox google-chrome browser firefox-addon
特别是,我很想知道是否可以捕获用户对不同浏览器选项卡的点击。我想从技术上讲,我可以获得窗口对象的模糊和焦点,但如果有一些与浏览器(IE、FF、Chrome 等)更紧密相关的东西,那就更好了。
【问题讨论】:
标签: internet-explorer firefox google-chrome browser firefox-addon
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 发送显式事件,但 blur 事件可能会执行您想要的操作。
火狐
在 Firefox 中,您可以通过为 TabAttrModified 添加事件侦听器并检查 selected 属性来检测 XUL 中的选项卡更改。请参阅MDC documentation for the dealing with the Tabbed Browser。
【讨论】:
TabSelect 更简单:developer.mozilla.org/en/Code_snippets/…