аналог document.readyState для основанных на гекконе браузеров

// generate a random number starting with 5 and less than 15
Random r = new Random();
int num = r.Next(5, 15);  

Для удваивается, можно заменить Затем NextDouble

5
задан maniac 7 October 2009 в 13:08
поделиться

2 ответа

Нет, это невозможно. Сожалею. Но вот что можно сделать. Если вы не можете проверить то, что вы хотите быть там, прежде чем действовать:

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

(Это определенно сделает это после рендеринга страницы, но это может быть после загрузки, а не после DOMContentLoaded.)

Если вы знаете, как для проверки того, что вы ищете:

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

Это сделает это немедленно, если только то, что вы ищете, отсутствует, и в этом случае он будет ждать до окончания события onload.

Изменить:

Ознакомьтесь с этим решением.

В крайних случаях оно проверяет, является ли последний элемент document.getElementsByTagName ("*") неопределенным или нет. И это, кажется, работает для него даже в Opera.

3
ответ дан 14 December 2019 в 19:18
поделиться

Может быть выполнен? Просто получите уведомление о событии DOM и сохраните его состояние. Я не понимаю, в чем ваша основная проблема. Конечно, вы могли бы избавиться от этого метода и приспособить его к вашей ситуации.

Способ jQuery сделать это:

// Mozilla, Opera and webkit nightlies currently support this event
if ( document.addEventListener ) {
    // Use the handy event callback
    document.addEventListener( "DOMContentLoaded", function(){
              //do stuff
    }, false );

// If IE event model is used
} else if ( document.attachEvent ) {
    // ensure firing before onload,
    // maybe late but safe also for iframes
    document.attachEvent("onreadystatechange", function(){
        if ( document.readyState === "complete" ) {
            document.detachEvent( "onreadystatechange", arguments.callee );
            jQuery.ready();
        }
    });

    // If IE and not an iframe
    // continually check to see if the document is ready
    if ( document.documentElement.doScroll && window == window.top ) (function(){
        if ( jQuery.isReady ) return;

        try {
            // If IE is used, use the trick by Diego Perini
            // http://javascript.nwbox.com/IEContentLoaded/
            document.documentElement.doScroll("left");
        } catch( error ) {
            setTimeout( arguments.callee, 0 );
            return;
        }

        // and execute any waiting functions
        jQuery.ready();
    })();
}

// A fallback to window.onload, that will always work
jQuery.event.add( window, "load", jQuery.ready );
2
ответ дан 14 December 2019 в 19:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: