假设我有类似的内容:
<html lang="en">
<head>
<meta charset="utf-8">
<title>The HTML5 Herald</title>
</head>
<body>
<script src="js/scripts.js"></script>
</body>
</html>
在 scripts.js
中,我有以下代码:
var gridId = window['someGridId'];
问题是someGridId
是通过AJAX调用在后端生成的,并且使用.html()
附加到DOM。这样,scripts.js
不知道VAR的存在,因此未执行代码。
有什么办法让脚本知道新的var存在?
您需要重新设计scripts.js
,因此它不需要在加载时设置全局变量。使用gridId
的功能将需要在调用时进行设置。例如。而不是:
gridId = window['someGridId'];
function foo() {
// code that uses gridId
}
应该是:
function foo() {
var gridId = window['someGridId'];
// code that uses gridId
}
另一种可能性是提供设置全局变量的初始化函数:
function initVars() {
gridId = window['someGridId'];
...
}
使用scripts.js
的所有网页都必须在加载其依赖的所有内容后都必须调用initVars()
。不动态加载这些项目的页面只能做:
<script src="scripts.js"></script>
</script>initVars();</script>
您的页面可以在添加DOM元素的AJAX调用的回调函数中调用initVars()
。