Javascript-在iFrame上失去和获得焦点
当用户在网站外单击时,会调用模糊,我会捕获一个焦点丢失事件。当用户点击网站时,会调用一个焦点,然后我捕获一个焦点获得事件 但是对于iframe,它的工作原理有点不同。对于iframe,它被视为另一个网站,“选项卡”。因此,我有以下听众:Javascript-在iFrame上失去和获得焦点,javascript,iframe,Javascript,Iframe,当用户在网站外单击时,会调用模糊,我会捕获一个焦点丢失事件。当用户点击网站时,会调用一个焦点,然后我捕获一个焦点获得事件 但是对于iframe,它的工作原理有点不同。对于iframe,它被视为另一个网站,“选项卡”。因此,我有以下听众: document.addEventListener('blur', function() { if (document.activeElement !== document.getElementsByTagName('iframe')[0]) {
document.addEventListener('blur', function() {
if (document.activeElement !== document.getElementsByTagName('iframe')[0]) {
callback(isVisible(false));
}
}, false);
document.addEventListener('focus', function() {
callback(isVisible(true));
}, false);
这可以防止当您单击iframe导致焦点丢失时,但当您在网站/浏览器外部单击时,不会捕获任何事件,但只要您单击父对象,然后单击外部,它就会捕获焦点丢失事件
因此,我所需要的是,当活动元素是iframe并且在父网站外单击时,它应该捕获一个焦点丢失事件
isVisible(true)
我能找到的唯一方法是每隔几毫秒检查文档上的hasFocus
。我选择了700毫秒
setInterval(t.checkFocus, 700);
checkFocus() {
if ( document.hasFocus() ) {
if (!this.inFocus) {
analytics.focusGained(this);
this.inFocus = true;
}
} else {
if (this.inFocus) {
analytics.focusLost(this);
this.inFocus = false;
}
}
}
我能找到的唯一方法是每隔几毫秒检查文档上的
hasFocus
。我选择了700毫秒
setInterval(t.checkFocus, 700);
checkFocus() {
if ( document.hasFocus() ) {
if (!this.inFocus) {
analytics.focusGained(this);
this.inFocus = true;
}
} else {
if (this.inFocus) {
analytics.focusLost(this);
this.inFocus = false;
}
}
}