【问题标题】:What does the `document.write` do in this js snippet?这个 js 片段中的 `document.write` 做了什么?
【发布时间】:2015-01-29 19:00:32
【问题描述】:

代码如下所示

  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 会丢失?

据我了解,像这样的 sn-p 如果要清除整个文档似乎没有用....我说的对吗?

有人对此有想法吗?

【问题讨论】:

标签: javascript html dom browser domdocument


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    如果此代码由&lt;script&gt;&lt;/script&gt; 包装,那么它将在&lt;script&gt;&lt;/script&gt; 标记之后附加代码。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        相关资源
        最近更新 更多