javascriptdom-eventsgeckodomready

document.readyState analog for gecko-based browsers


IE has attribute readyState in document object, that indicates current state, e.g. "loading", "complete" etc.

Is there any way to find current loading state of document in Mozilla-based browsers? I'm aware of DOMContentLoaded event, but it wont fit my situation, as my code can be executed after this event was fired.

Added: no, I can't use any framework, and don't confuse with .readyState attribute of XHR object. And it's a bookmarklet, so it can be inserted in at any loading stage.

Added later: Anyway, it looks like it's not a big issue for me. Because this attribute will be added in FF3.6, and it does not break things badly in Firefox, when you manipulate on unfinished DOM (unlike IE).


Solution

  • No, it's not possible. Sorry. But here's what you can do. If you can't test for stuff you want to be there before acting:

    window.setTimeout(function () {
        // do your stuff here
    }, 0);
    

    (This will definitely do it after the page renders, but it might be after onload, not after DOMContentLoaded.)

    If you do know how to test for what you're looking for:

    (function () {
        if (/* test if what you're looking for is there */) {
            // do your stuff
        } else {
            window.setTimeout(arguments.callee, 0);
        }
    })();
    

    This will do it immediately, unless whatever you're looking for is not there, in which case it will wait until after the onload event.

    Edit:

    Check out this solution.

    What it does is, in the edge cases, checks if the last element of document.getElementsByTagName("*") is undefined or not. And that seems to work for him, even in Opera.