浏览器如何以及何时实现对文档DOM的实时更改?

时间:2010-05-30 00:14:34

标签: javascript dom real-time external

我的网站动态地将外部Javascript文件嵌入到head标记中。外部Javascript定义了一个全局变量myString =“data”。 myString在什么时候可以在网站中访问Javascript?

<html>
<head>
    <script type="text/javascript">
        myString = null;
        external = document.createElement("script");
        //externalScript.js is one line, containing the following:
        //myString = "data";
        external.setAttribute("src", "externalScript.js");
        external.setAttribute("type", "text/javascript");
        document.getElementsByTagName("head")[0].append(external);
        alert(myString);
    <script>
</head>
<body>
</body>
</html>

此代码在Chrome和IE中警告null(当我认为它会警告“数据”时),即使此时DOM已加载到externalScript.js中。什么时候外部脚本.js实际上是由浏览器评估的,我在什么时候可以访问myString的新值?

1 个答案:

答案 0 :(得分:4)

onload事件触发该脚本元素时,您可以访问它,如下所示:

external = document.createElement("script");
external.onload = function() { alert(myString); };
script.onreadystatechange= function () { //for IE, the special kid...
  if (this.readyState == 'complete') alert(myString);
}
external.setAttribute("src", "externalScript.js");
external.setAttribute("type", "text/javascript");
document.getElementsByTagName("head")[0].appendChild(external);

这只是附加一个函数,一旦脚本加载就运行,执行任何依赖于脚本的代码。对前一个答案的更正:正如seanmonstar在评论中指出的那样(谢谢!),你确实在这里确实需要一个IE异常,因为它有点“特殊”......