所以我被困在这个问题背后
我正在使用AJAX来刷新我的网站,当我还需要为新加载的div添加脚本时。敌人,我正在使用这段代码
$.getScript('scripts/shBrushJava.js');
$.getScript('scripts/shCore.js');
setTimeout(function(){
$(".left-content").load(document.location.hash.substr(1));
}, 10);
有时这会有效,有时候不会在下面的图片中显示
这是工作2张图片(网站和Firebug控制台)
这些是不工作时的图像(95%)
如您所见,当JS未正确加载时,它们将显示在控制台中。如何解决这个问题?
答案 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>
。