我希望就包含动态js变量的最佳方法提供建议。有来自服务器的某些js变量,类似于:
var user_preferences = [<?php //declare some type of array here;?>];
显然,您不能在*.js文件中运行PHP (虽然我认为可以使用Apache和.htaccess指令),而且我认为您不希望在*.js文件中包含动态内容,因为整个想法是让浏览器缓存代码。
这些变量的总集合(例如AJAX位置、用户设置)实际上非常小。我真的不喜欢在页面上声明它们,而是将它们包含在某个地方,但是考虑到它们是动态的,我该如何做呢?
我正在尝试使用appendChild DOM方法在index.html文件中动态加载一个js脚本。我试图在下一行中使用动态加载的js中的一些函数,但我得到的错误是指定的函数未定义。我知道这个错误是由于浏览器中加载脚本的异步行为造成的。我也使用了async flag作为false,但没有用处。下面是示例代码。
<script>
var head = document.getElementsByTagName('head')[0];
var js = document.createElement("script");
js.type = "te
这是我去测试一种语言是否具有动态的名称解析。
function foo() {
function bar() {
print a
}
var a = 10
bar()
}
如果语言使用动态名称解析,代码应该打印10。否则,它会抛出一个未定义的错误。
Javascript打印10。但是Javascript使用变量提升,它将var a移动到最上面的foo并使我的测试无效。
编辑:如果我们可以删除JS中的变量,那么以下是一个很好的测试:
var a = 5
function foo() {
var a = 10
function bar
我使用下面的代码动态地向我的页面添加脚本:
var newScriptElem = document.createElement("script");
newScriptElem.innerHTML = myJSCodeString; // myJSCodeString loaded before from .js separate file.
parentElement.appendChild(newScriptElem);
内部的代码确实会被调用,并且工作正常,但我无法在该块之外获得任何变量。通过使用<script src="app.js">标记