我有使用传统独立方法加载的脚本
<Script src="wthvideo/wthvideo.js"></script>
没有问题。但是当我在JqueryUi.Dialog框上单击确认后尝试使用Ajax / getScript()方法加载它时 - 脚本将无法运行/加载,并且开发人员工具不会显示脚本被调用。
fadeIn()
效果等其他组件触发得很好 - 只有getScript()
失败。看看JqueryUi API,我没看到我错误地将它搞砸了,有人可以解释为什么脚本不会加载/触发吗?
$( "#fsr" ).dialog({
resizable: false,
height: 350,
width: 550,
modal: true,
buttons: {
"Allow Fullscreen": function() {
launchFullscreen(document.documentElement);
$( this ).dialog( "close" );
$('#title span').fadeIn(2000);
$('#titlesub span').fadeIn(2800);
setTimeout(function(){$('#globe').addClass("globefc");}, 1500);
/*$.ajax({
url: "wthvideo/wthvideo.js",
async: false,
dataType: "script",
success: success
});*/
$.getScript("wthvideo/wthvideo.js");
setTimeout(function(){ $('#wthvideo').remove();}, 39500);
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
答案 0 :(得分:0)
您的脚本(wthvideo.js
)采用以下格式:
function wthplayer() {
...
}
if (window.addEventListener) {
window.addEventListener("load", wthplayer, false);
} else if (window.attachEvent) {
window.attachEvent("onload", wthplayer);
} else {
window.onload = wthplayer;
}
所以,你只做两件事:
您的问题是,您在浏览器wthvideo.js
事件触发后很长时间内动态加载onLoad
脚本 。如果您将之前的 加载到onLoad
事件,这可以正常工作,这就是使用<script>
标记时没有问题的原因。
有很多方法可以解决这个问题。一种快捷的方法是check if the onLoad
event has already executed并立即执行您的功能:
function wthplayer() {
...
}
if (document.readyState === 'complete') {
wthplayer();
}
else {
if (window.addEventListener) {
window.addEventListener("load", wthplayer, false);
} else if (window.attachEvent) {
window.attachEvent("onload", wthplayer);
} else {
window.onload = wthplayer;
}
}