jQuery没有加载javascripts

时间:2014-04-18 20:33:19

标签: javascript php jquery ajax

所以我被困在这个问题背后

我正在使用AJAX来刷新我的网站,当我还需要为新加载的div添加脚本时。敌人,我正在使用这段代码

$.getScript('scripts/shBrushJava.js');
$.getScript('scripts/shCore.js');
setTimeout(function(){
    $(".left-content").load(document.location.hash.substr(1));
}, 10);

有时这会有效,有时候不会在下面的图片中显示

这是工作2张图片(网站和Firebug控制台) enter image description here enter image description here

这些是不工作时的图像(95%) enter image description here enter image description here

如您所见,当JS未正确加载时,它们将显示在控制台中。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如前所述,ajax是异步的。因此,无法保证在任何给定时间加载脚本文件。您已将超时设置为10毫秒。有时,文件可能已被加载和解析,有时则没有。

这是一个关于如何保证脚本加载的示例,但是已经有大量第三方库可用。例如RequireJS

简单示例:

var getAllScripts = function (scripts, callback) {
        var i, count = scripts.length;
        // Start loading all files
        for (i = 0; i < scripts.length; i += 1) {
            $.getScript(scripts[i], function () {
                // When loaded, decrease count
                count -= 1;
                // If all is loaded, call the callbacl
                if (count === 0) {
                    callback();
                }
            });
        };
    };

getAllScripts([
        'scripts/shBrushJava.js',
        'scripts/shCore.js'
    ],
    function () {
        // Here all files is loaded, do your magic here
        alert('All is loaded');
    }
);

这是fiddle试用

或者你可以放:

<script src="scripts/shCore.js" type="text/javascript"></script>
<script src="scripts/shBrushJava.js" type="text/javascript"></script>

在你的html <head>中。然后它保证加载到整个<body>