延迟加载javascript文件

时间:2012-05-18 11:45:41

标签: jquery-deferred

<form id="form1" runat="server">
<div id="chart1">
</div>
</form>

<script type="text/javascript">

    // Add a script element as a child of the body 

    function downloadJSAtOnload() {

        var element1 = document.createElement("script");
        element1.src = "js/jquery-1.7.2.js";
        document.body.appendChild(element1);
        var element2 = document.createElement("script");
        element2.src = "js/jquery.jqplot.js";
        document.body.appendChild(element2);
        var element3 = document.createElement("script");
        element3.src = "js/jqplot.canvasTextRenderer.js";
        document.body.appendChild(element3);
        var element4 = document.createElement("script");
        element4.src = "js/jqplot.canvasAxisLabelRenderer.js";
        document.body.appendChild(element4);
        var element5 = document.createElement("script");
        element5.src = "js/deferredfunction.js";
        document.body.appendChild(element5);
        //setTimeout("Func1()", 2000);
        //Func1();
        //            $(window).bind("load", function() {
        //                Func1();
        //            });

    }

    function Func1() {



        var plot1 = $.jqplot('chart1', [[3, 7, 9, 1, 4, 6, 8, 2, 5]]);


    }




    // Check for browser support of event handling capability
    function chk_comp() {
        if (window.addEventListener)
            window.addEventListener("load", downloadJSAtOnload, false);
        else if (window.attachEvent) {
            debugger;
            window.attachEvent("onload", downloadJSAtOnload);
        }
        else window.onload = downloadJSAtOnload;
    }

    chk_comp();
</script>

我收到错误。我希望在页面加载完成后调用jquery函数进行调用,并且在加载了所有必要的.js文件之后它会自动触发函数“func1()”但是它没有发生。请帮助我

1 个答案:

答案 0 :(得分:0)

我不明白为什么要在开始加载其他脚本之前等待完整加载页面。你应该同时加载所有脚本,它会更快。

然后,如果浏览器支持事件,则可以触发 func1()

如果您经常遇到有关条件加载的问题,我建议您使用一些方法轻松实现:http://yepnopejs.com/