2013-06-04 19 views
0

我在Ajax调用oncomplete时向我的网站添加了一个JavaScript文件(使用appendChild)。之后,我试图调用该文件中包含的函数。像这样:检查JavaScript是否在Ajax调用中加载?

// append the JS to the head 
document.getElementsByTagName('head')[0].appendChild(element); 

// call a function that is contained in the js file 
myFunction(); 

对myFunction的调用说“没有定义myFunction()”。问题是,我怎么知道它何时被定义?

谢谢!

+0

tes如果它不是未定义的可能? –

+0

http://stackoverflow.com/questions/6725272/dynamic-cross-browser-script-loading – Prinzhorn

+1

'typeof(myFunction)===“undefined”' – BrunoLM

回答

1

你可以做

if (myfunction != undefined) 
{ 
} 

此外,以确保它是你可以添加此

if(typeof (window.myFunction) == ‘function’) { 
+1

你的第一个例子会在myfunction函数未定义时抛出一个错误。第二个是更好的:-) – tborychowski

1

您可以使用onload找出它是完成时的功能。

var s = document.createElement('script'); 
s.onreadystatechange = s.onload = function() { 
    var state = s.readyState; 

    if (!callback.done && (!state || /loaded|complete/.test(state))) { 
     // done! 
    } 
}; 
s.src = "myurl/myscript.js"; 
document.getElementsByTagName('head')[0].appendChild(s); 
+0

一个字:** IE **:http://stackoverflow.com/questions/6725272/dynamic-cross-browser-script-loading – Prinzhorn

+0

是的,真的,更新为... – Gabe

+0

它不会工作! – Givi

相关问题