views:

78

answers:

2

I'm trying to do something similar to this...

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

The window.onblur doesn't seem to be working though, is there something I can replace that with?

A: 

You should assign a function to window.onblur, in your question you're only testing if the property onblur exists. But window.onblur doesn't always work correctly in every browser. The article Detecting focus of a browser window shows how to set this up. In your case it would be something like:

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;
}
Marcel Korpel
+1  A: 

What do you mean by doesn't seem to be working? Here's what you are currently saying:

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

Which is probably not what you want. Try

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

also make sure that you set an onfocus handler as to clear the timeout if you want it to stop happening when the user returns. :)

CrazyJugglerDrummer