来自$ .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(); });