如何检查窗口是否有焦点?

时间:2010-07-05 23:58:13

标签: javascript focus

我正在尝试做类似的事情......

if (window.onblur) {
    setTimeout(function () {
        DTitChange(name)
    }, 1000)
} else {
    document.title = dtit
}

window.onblur似乎没有工作,有什么我可以替换它吗?

2 个答案:

答案 0 :(得分:1)

你的意思似乎不起作用?以下是您目前所说的内容:

If there's an onblur event handler:
    execute DTitChange once ever second.
Else 
    document.title = dtit

这可能不是你想要的。尝试

window.onblur = function () {
    setTimeout(function () { DTitChange(name) }, 1000);
};

还要确保设置onfocus处理程序以清除超时,如果您希望在用户返回时停止发生超时。 :)

答案 1 :(得分:0)

您应该为window.onblur分配一个功能,在您的问题中,您只测试属性onblur是否存在。但是window.onblur并不总是在每个浏览器中都能正常工作。文章Detecting focus of a browser window展示了如何设置它。在你的情况下,它将是这样的:

function DTitBlur() {
    /* change title of page to ‘name’ */
    setTimeout(function () {
        DTitChange(name)
    }, 1000);
}

function DTitFocus() {
    /* set title of page to previous value */
}

if (/*@cc_on!@*/false) { // check for Internet Explorer
    document.onfocusin = DTitFocus;
    document.onfocusout = DTitBlur;
} else {
    window.onfocus = DTitFocus;
    window.onblur = DTitBlur;
}