gpt4 book ai didi

javascript - 添加事件以检测何时加载所有动态添加的脚本

转载 作者:行者123 更新时间:2023-11-30 17:45:57 25 4
gpt4 key购买 nike

代码中没有错误,所以我只能假设事件没有被触发或者它们没有被正确添加。谁能确定这里的问题是什么?

代码如下。 Fiddle here .

$('#fake-body').append('init<br />');
var scriptTag,
scriptsLoaded = 0,
scripts = ['//netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min.js', '//codeorigin.jquery.com/ui/1.9.2/jquery-ui.min.js'],
scriptLoadedCallback = function(val) {
scriptsLoaded++;
$('#fake-body').append('callback called for '+val+' | scriptsloaded = '+scriptsloaded+' & length = '+scripts.length+'<br />');
if(scriptsLoaded === scripts.length) {
$('#fake-body').append('all loaded');
}
};

$.each(scripts, function(index, value) {
$('#fake-body').append('preparing '+value+'<br />');
scriptTag = document.createElement('script');
scriptTag.type = 'text/javascript';
scriptTag.src = value;
if(typeof scriptTag.addEventListener !== 'undefined') {
$('#fake-body').append('add event for good browsers<br />');
scriptTag.addEventListener('load', (function() {
scriptLoadedCallback(value);
}), false);
} else {
$('#fake-body').append('add event for the other one<br />');
scriptTag.attachEvent('onreadystatechange', function() {
if(scriptTag.readyState === 'loaded') {
scriptLoadedCallback(value);
}
});
}
$('#fake-body').append('appending script<br />');
$('#fake-body').append(scriptTag);
});

$('#fake-body').append('complete');

最佳答案

使用纯 Javascript 加载 javascript 文件而不是 jquery(因为 jquery 不会触发当前代码中的加载回调),所以替换:

$('#fake-body').append(scriptTag);

与:

$('#fake-body')[0].appendChild(scriptTag);

或者如果你坚持使用 jquery,你必须遵守以下语句顺序(或使用 getScript ):

$body.append(scriptTag);
scriptTag.attachEvent
scriptTag.src = scriptUrl;

jsfiddle

您在回调中引用 scriptsloaded 而不是 scriptsLoaded 时出现另一个错误。

关于javascript - 添加事件以检测何时加载所有动态添加的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20172670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com