jQuery(document).ready多久会被调用?

前端之家收集整理的这篇文章主要介绍了jQuery(document).ready多久会被调用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果第三方 javascript文件挂起并需要一段时间才能加载,那么
jQuery(document).ready(function() {})

在被叫之前必须等待加载吗?

解决方法

是的,它必须等待.
特别是,在其他脚本有机会执行之前,您不能依赖jQuery(document).ready().
ready可以绑定到DOMContentReady,readystatechanged或onload,无论哪个可用.

该文档指出“在大多数情况下,只要DOM层次结构已完全构建,脚本就可以运行”.请注意,唯一的保证是在此事件触发时DOM已准备就绪.
它不能保证你的任何其他东西 – 因为它不能.

例如,这在IE,Firefox或Chromium中不起作用,无论您如何随机播放脚本标记,都会在ready()处理程序有机会执行之前调用brilliant.js:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test</title>
    <script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.js" charset="utf-8" type="text/javascript" ></script>
</head>
<body>
    <script type="text/javascript" >
    // <![CDATA[
        alert("attaching event");
        $(document).ready(function () { alert("fired"); });
    // ]]> 
    </script>
    <script type="text/javascript" src="brilliant.js" ></script>
</body>
</html>

仅供参考,这是jquery-1.4.2的相关代码

bindReady: function() {
    if ( readyBound ) {
        return;
    }

    readyBound = true;

    // Catch cases where $(document).ready() is called after the
    // browser event has already occurred.
    if ( document.readyState === "complete" ) {
        return jQuery.ready();
    }

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

        // A fallback to window.onload,that will always work
        window.addEventListener( "load",jQuery.ready,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",DOMContentLoaded);

        // A fallback to window.onload,that will always work
        window.attachEvent( "onload",jQuery.ready );

        // If IE and not a frame
        // continually check to see if the document is ready
        var toplevel = false;

        try {
            toplevel = window.frameElement == null;
        } catch(e) {}

        if ( document.documentElement.doScroll && toplevel ) {
            doScrollCheck();
        }
    }
},

猜你在找的jQuery相关文章