我使用$ .getScript加载脚本文件,这很好用。如果我检查浏览器中的网络选项卡,文件确实下载成功。但是,当我尝试使用脚本文件中的函数时,它们是未定义的。 HTML中也没有新的脚本标记。
下载后如何使用新脚本文件?
注意:下载后,该文件也不会显示在开发工具的资源选项卡中。
编辑:在下面添加了代码以及更多信息
脚本正在加载文件:
var STUD = function () {
return {
STUDLoaded: function () {
alert('Working!');
}
}
}
function foo()
{
alert('bar!');
}
js下载脚本文件并调用函数。
$.getScript(gSiteRoot + 'Scripts/Views/' + ControllerName + '.js')
.done(function (script, textStatus) {
debugger;
foo();
if ($('#hdnJSClass') != undefined)
window[$('#hdnJSClass').val()][$('#hdnJSClassFunc').val()]();
})
.fail(function (jqxhr, settings, exception) {
GEN._displayNotification('Error', 'There was an error loading the page, please retry', true);
});
在异步加载后调用时,函数foo正确触发。所以问题在于窗口调用,这个调用适用于我的其他js函数,但不适用于动态加载的函数。
答案 0 :(得分:1)
使用.getScript()
所以:
$.getScript('path/to/file.js', function(data, ts, jqxhr){
if( jqxhr.status == 200 ){
// do stuff
}
else{
// failed retrieving file
}
});
答案 1 :(得分:0)
我发现了这个问题,STUD对象中存在语法错误,其内容无效。我忘了添加右括号:
var STUD = function () {
return {
STUDLoaded: function () {
alert('Working!');
}
}
}(); // <-- forgot those