【发布时间】:2011-08-29 19:27:36
【问题描述】:
有没有办法像同步 XMLHttpRequest 一样以同步方式加载和执行 javascript 文件?
我目前正在使用同步 XMLHttpRequest,然后对此进行 eval,但调试该代码非常困难......
感谢您的帮助!
更新
我现在试过了:
test.html
<html>
<head>
<script type="text/javascript">
var s = document.createElement("script");
s.setAttribute("src","script.js");
document.head.appendChild(s);
console.log("done");
</script>
</head>
<body>
</body>
</html>
script.js
console.log("Hi");
输出: 完毕 嗨
所以它没有同步执行。任何想法让“嗨”首先出现?
更新 2 其他例子
test.html(脚本标签内的代码)
var s = document.createElement("script");
s.setAttribute("src","script.js");
document.head.appendChild(s);
SayHi();
script.js
function SayHi(){
console.log("hi");
}
输出:未捕获的 ReferenceError:SayHi 未定义
【问题讨论】:
-
不确定我是否理解 - JavaScript is 会同步执行,除非在
script标记中使用了deferred属性。你能举例说明你的意思吗? -
对不起,不是真的。当您通过代码动态加载 JS 脚本时,与将其包含在标记中(就像询问者所做的那样)不同 - 默认情况下,它总是异步加载。请参阅下面的其余线程。
-
document.write() 是同步插入脚本标签的唯一方法。
-
这能回答你的问题吗? Dynamically loading JavaScript synchronously
标签: javascript load synchronous