我特别想知道是否可以捕获用户对不同浏览器选项卡的点击。我想从技术上讲,我可以获得窗口对象的模糊和焦点,但如果有与浏览器(IE、FF、Chrome 等)更紧密相关的东西,那就更好了。
最佳答案
IE
如果您正在编写 native 代码(即浏览器插件),您可以使用 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 .
关于internet-explorer - 是否可以检测用户何时切换标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716115/