Javascript 在插入脚本标记后调用回调
我寻找答案,但没有找到。如果屏幕大于768px,我想包括Nivo滑块脚本。我有一个函数,在窗口大小大于768px时创建一个脚本标记,然后从这个脚本调用一个函数Javascript 在插入脚本标记后调用回调,javascript,jquery,Javascript,Jquery,我寻找答案,但没有找到。如果屏幕大于768px,我想包括Nivo滑块脚本。我有一个函数,在窗口大小大于768px时创建一个脚本标记,然后从这个脚本调用一个函数 $(function(){ (function(d, s, id){ if(window.innerWidth > 768){ var js, fjs = d.getElementsByTagName(s)[0]; js = d.createEleme
$(function(){
(function(d, s, id){
if(window.innerWidth > 768){
var js, fjs = d.getElementsByTagName(s)[0];
js = d.createElement(s); js.id = id;
js.src = "plugins/nivo-slider/jquery.nivo.slider.js";
fjs.parentNode.insertBefore(js, fjs);
$('#slider').nivoSlider();
}
}(document, 'script', 'nivo'));
});
Javascript在插入脚本标记后立即调用nivoSlider()
方法,但脚本尚未加载。如果我将nivo方法放在setTimeout()
中,它就可以工作,但这是一个蹩脚的hack
有什么想法吗?您正在使用jQuery,因此请使用jQuery加载脚本并使用成功处理程序
$.ajax({
url: "plugins/nivo-slider/jquery.nivo.slider.js",
dataType: "script",
cache : true,
success: function() {
$('#slider').nivoSlider();
}
});
您正在使用jQuery,因此请使用jQuery加载脚本并使用成功处理程序
$.ajax({
url: "plugins/nivo-slider/jquery.nivo.slider.js",
dataType: "script",
cache : true,
success: function() {
$('#slider').nivoSlider();
}
});
我建议使用
jQuery.getScript
:
或者如果你真的想成为本地人:
js.onload = js.onreadystatechange = function() {
var state = this.readyState;
if( !this.loaded && ( !state || state=='loaded' || state=='complete' ) ) {
this.loaded = 1;
$('#slider').nivoSlider();
}
}
我建议使用
jQuery.getScript
:
或者如果你真的想成为本地人:
js.onload = js.onreadystatechange = function() {
var state = this.readyState;
if( !this.loaded && ( !state || state=='loaded' || state=='complete' ) ) {
this.loaded = 1;
$('#slider').nivoSlider();
}
}
从文档中可以看出,“一旦加载脚本,就会触发回调,但不一定执行。”调用.nivoSlider()?@Ceres时,如何保证脚本已执行?这是一条有趣的语句,但我从未纠正过脚本延迟执行的情况。我想这更像是一个“免责声明”。我添加了一个本机onload,以便您可以选择毒药。感谢您的分享,@David。从文档中,它声明“一旦加载脚本,就会触发回调,但不一定执行。”您如何保证在调用.nivoSlider()时脚本已执行?@Ceres这是一条有趣的语句,但是我从来没有考虑过脚本延迟执行的情况。我想这更像是一个“免责声明”。我添加了一个本地的onload,这样你就可以选择你的毒药了。谢谢你的分享,@David。为什么我以前没想到呢?谢谢@epascarello,对我来说很好。@RGraham这与getScript相同,只是getScript禁用了缓存,这是不好的。缓存绝对不错。不进行版本控制当然是不好的。不,这是不好的,因为对文件的每个请求都会命中服务器!哈哈,我把它误读为默认情况下
getScript
缓存。对不起:)我一直在想你为什么我以前没想到?谢谢@epascarello,对我来说很好。@RGraham这与getScript相同,只是getScript禁用了缓存,这是不好的。缓存绝对不错。不进行版本控制当然是不好的。不,这是不好的,因为对文件的每个请求都会命中服务器!哈哈,我把它误读为默认情况下getScript
缓存。对不起:)不管怎样,我还是会喜欢你的