Javascript 如何知道Chrome窗口何时具有焦点(文档中有插件)?

Javascript 如何知道Chrome窗口何时具有焦点(文档中有插件)?,javascript,google-chrome,focus,dom-events,silverlight-5.0,Javascript,Google Chrome,Focus,Dom Events,Silverlight 5.0,我有一个应用程序,当它无法处理键盘事件时,需要通知它的用户。我一直在监视document.hasFocus(),它在Firefox和IE(!)中可以正常工作,但在Chrome中却不能 如果从位置栏开始,document.hasFocus()返回false;当I选项卡时,包含插件实例的文档获得焦点,并且document.hasFocus()返回true;现在,如果我再次单击TAB,插件(本例中为Silverlight)将获得焦点,并且document.hasFocus()返回false 可能这是正

我有一个应用程序,当它无法处理键盘事件时,需要通知它的用户。我一直在监视
document.hasFocus()
,它在Firefox和IE(!)中可以正常工作,但在Chrome中却不能

如果从位置栏开始,
document.hasFocus()
返回false;当I选项卡时,包含插件实例的文档获得焦点,并且
document.hasFocus()
返回true;现在,如果我再次单击TAB,插件(本例中为Silverlight)将获得焦点,并且
document.hasFocus()
返回false


可能这是正确的行为,其他两个浏览器错误地返回true,但如果是这样,我如何知道浏览器窗口何时具有焦点?

您可以这样尝试:

var hasFocus = false,
    toggleFocus = function() {
        hasFocus = !hasFocus
    };
window.addEventListener( 'focus', toggleFocus );
window.addEventListener( 'blur', toggleFocus );

使用
blur
focus
事件比持续监视
document.hasFocus()
要好,但当您关注我监视hasFocus()的位置时,模糊事件似乎确实会触发从SL端开始,我也必须监视Xaml焦点…我尝试了一些类似于您之前发布的内容,但没有成功。我会尝试你的代码,很难,也许使用addEventListener会有所不同。不起作用。我以前的尝试是使用window.onfocus和window.onblur分配跟踪焦点的函数,但这也不起作用。问题似乎是Chrome将插件视为另一个窗口,因此报告其焦点被盗……这太糟糕了!很抱歉,我没有任何其他建议…这有助于我解决问题(不过我已将焦点设置为true)