当我通过ajax将下面的html存储到div中时遇到问题
<script type="text/javascript" src="site.com/file.js"></script>
<script type="text/javascript">
//use file.js object, get an exception because it doesn't exist
我通过在本地托管它来修复它(/myjs/file.js
)。然而,这感觉就像是一个黑客。如何确保先加载然后执行?看来 jquery.ready 不是解决方案,因为在我 ajax html 之前 dom 就已经准备好了。我该如何正确等待?
最佳答案
您提到jQuery.ready
,所以我猜你使用的是 jQuery。如果是这样,则不要输入 <script>
div
内容中的标签,使用 jQuery.getScript
,这将在脚本加载时给您一个回调。
如果由于某种原因您无法这样做,您可以进行轮询,例如在您的代码中想要使用 file.js
中的内容:
function doSomethingWithFileJS() {
if (typeof anObjectProvidedByFileJS === "undefined") {
setTimeout(doSomethingWithFileJS, 50);
return;
}
// Here, you know file.js has been loaded
}
关于JavaScript ajax 竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406259/