来自$ .getScript的未定义函数
这个必须非常简单。 外部javascript文件包含:
function Hello() { alert('Hello'); }
它是getScript()
ed,然后调用包含的函数
$.getScript('myscript.js'); Hello();
我明白了:
ReferenceError:未定义Hello
但是,如果脚本在HTML 标记中引用,则它会按预期工作
Hello();
我错过了什么? 如何引用在getScript()
ed脚本中创建的对象? 我想使用getScript()
它来加载ready()
事件上的脚本。
问题是$.getScript()
函数是异步的。 紧接着调用Hello()
函数后,脚本尚未加载,因此该函数不可用。
使用常规标记加载脚本会同步进行,因此如果要复制该行为,则必须在Ajax调用中禁用
async
选项。 单独的getScript
不支持此function,因此您可以使用带有相应选项的$.ajax
调用来执行此操作:
$.ajax({ url: 'myscript.js', dataType: 'script' async: false });
这将阻止浏览器,直到加载脚本。
一种更好的技术是使用回调,但$.getScript()
支持回调:
$.getScript('myscript.js', function() { Hello(); });
您需要等待响应:
$.getScript('myscript.js', function(){ Hello(); });