`document.write`在这个js片段中做了什么?

时间:2015-01-29 10:42:37

标签: javascript html dom browser domdocument

代码看起来像这样

  var addScript = function(path, server){
    server = server || scriptConfig.server;
    document.write('<script type="text/javascript" src="' + server + path +'"></script>');
  };

  if (scriptConfig.autoLoadDependencies) {
    addScript("/javascripts/webtoolkit.base64.js");
    addScript("/javascripts/swfobject.js");
    addScript("/javascripts/jQuery/jquery-1.3.2.js");
    addScript("/javascripts/jQuery/jquery-ui-1.7.1.custom.min.js");
    addScript("/javascripts/underscore/underscore.js");
    addScript("/javascripts/nglr/Loader.js");
    addScript("/javascripts/nglr/API.js");
    addScript("/javascripts/nglr/Binder.js");
    addScript("/javascripts/nglr/ControlBar.js");
    addScript("/javascripts/nglr/DataStore.js");
    addScript("/javascripts/nglr/Filters.js");
    addScript("/javascripts/nglr/JSON.js");
    addScript("/javascripts/nglr/Model.js");
    addScript("/javascripts/nglr/Parser.js");
    addScript("/javascripts/nglr/Scope.js");
    addScript("/javascripts/nglr/Server.js");
    addScript("/javascripts/nglr/Users.js");
    addScript("/javascripts/nglr/Validators.js");
    addScript("/javascripts/nglr/Widgets.js");
  } else {
    addScript("/ajax/libs/swfobject/2.2/swfobject.js", "http://ajax.googleapis.com");
    addScript("/ajax/libs/jquery/1.3.2/jquery.min.js", "http://ajax.googleapis.com");
    addScript("/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js", "http://ajax.googleapis.com");
  }

MDN document中所述,

  

注意:当document.write写入文档流时,调用   关闭(加载)文档上的document.write会自动调用   document.open将清除文档。

document.write将清除整个文件。如果是这样,那么addScript的第一次通话是否会清除整个页面?这是否意味着它可以加载这些js文件,但整个HTML DOM将丢失?

据我所知,像这样的代码片段如果能清除整个文档似乎没什么用呢 ....我是对的吗?

有没有人有这方面的想法?

3 个答案:

答案 0 :(得分:1)

我假设这是在这样的页面中:

<html>
    <head>
        <script>//that stuff</script>
    </head>
....

在这种情况下,文档尚未关闭&#34;,因为它仍处于加载过程中。因此,它不应该清除其余部分。

答案 1 :(得分:1)

如果此代码由<script></script>包装,则它会在<script></script>标记之后追加代码。

答案 2 :(得分:0)

在这段代码中,当调用addScript函数时,然后document.write只在文档中的document.write方法中写入你的字符串。现在您可以使用此脚本。