javascript - 附加脚本未执行
问题描述
我正在尝试将外部脚本导入 HTML 文件的标题。脚本的名称应从定期更新的 SQL 数据表中获取(因此,将导入不同的脚本)。为此,我设置了一个 XMLHttpRequest,在函数中我将 js = 设置为从 SQL 数据表中获取的文本,最后,我将新的 js 附加到我的标题顶部。我认为这可以解决问题,但是,脚本似乎没有成功导入。例如,如果我从适当的脚本控制台记录变量“cond”,那么我会收到一个错误。所以我的问题是为什么脚本没有被执行,我能做些什么来修复它?
script3.js
var cond = "hallo"
索引.html
<script src="script1.js"></script>
<script src="script2.js"></script>
<script> //import script with name taken from SQL database
function reqListener () {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest(); // New request object.
oReq.onload = function() {
const js = document.createElement("script");
var noQuotes = this.responseText.split('"').join('');
js.src = noQuotes;
document.head.appendChild(js); //script should now have been appended to top of head
};
oReq.open("get", "index.php", true);
oReq.send();
</script>
<script>
console.log(cond). //attept to console log variable from imported js file
</script>
解决方案
你得到了"Uncaught ReferenceError: cond is not defined"
因为cond
变量没有定义......但是!
您想console.log(cond)
使用onload
事件处理程序js
进行包装......以便您的 html 文档在尝试执行该命令之前等待变量完全加载。
就像是:
<script src="script1.js"></script>
<script src="script2.js"></script>
<script> //import script with name taken from SQL database
function reqListener () {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest(); // New request object.
let js = document.createElement("script");
oReq.onload = function() {
var noQuotes = this.responseText.split('"').join('');
js.src = noQuotes;
document.head.appendChild(js); //script should now have been appended to top of head
};
oReq.open("get", "index.php", true);
oReq.send();
js.onload = function() {
console.log(cond)
};
</script>
应该管用。oReq.onload
(假设您将 js 变量带入全局范围......也就是在函数之外声明它。
为此,我设置了一个 XMLHttpRequest
PS 查看Fetch API而不是 XMLHttpRequest。干净多了。
推荐阅读
- python-3.x - 来自 excel 'numpy.float64' 对象不可迭代
- oracle-sqldeveloper - 使用 WHERE 子句从同一个主表创建两个不同的列
- csvhelper - 编写类似于 CSV 文件的文件
- c - if 语句和 mod(SIZE) 之间的效率差异
- regex - 正则表达式:捕获任何(动态)数量的行
- php - 在 Google Cloud 的 centos 上运行的 Code Igniter 上的内部服务器错误 500
- python - Python:为什么返回语句不起作用?
- python - 直接处理没有Button的Tkinter Entry输入?
- hadoop - Hadoop:纱线和本地内存使用
- python - tensorflow 训练第一个 epoch 结束时的 ValueError