`document.write` 在这个 js 片段中做了什么?
What does the `document.write` do in this js snippet?
代码看起来像这样
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、
中所述
Note: as document.write writes to the document stream, calling
document.write on a closed (loaded) document automatically calls
document.open which will clear the document.
document.write
将清除整个文档。如果是这样, addScript
的第一个调用不会清除整个页面吗?这是否意味着它可以加载这些 js 文件,但整个 HTML DOM 将丢失?
据我了解,像这样的代码段 如果它会清除整个文档,则似乎没有用 ...我说得对吗?
有人对此有想法吗?
我假设这是在这样的页面中:
<html>
<head>
<script>//that stuff</script>
</head>
....
在这种情况下,文档尚未 "closed",因为它仍在加载过程中。因此,它不应该清除其余部分。
如果此代码由 <script></script>
包装,则它会在 <script></script>
标记之后附加代码。
在这段代码中,当调用 addScript 函数时,然后 document.write 只需在文档中的 document.write 方法中写入字符串。现在你可以使用这个脚本了。
代码看起来像这样
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、
中所述Note: as document.write writes to the document stream, calling document.write on a closed (loaded) document automatically calls document.open which will clear the document.
document.write
将清除整个文档。如果是这样, addScript
的第一个调用不会清除整个页面吗?这是否意味着它可以加载这些 js 文件,但整个 HTML DOM 将丢失?
据我了解,像这样的代码段 如果它会清除整个文档,则似乎没有用 ...我说得对吗?
有人对此有想法吗?
我假设这是在这样的页面中:
<html>
<head>
<script>//that stuff</script>
</head>
....
在这种情况下,文档尚未 "closed",因为它仍在加载过程中。因此,它不应该清除其余部分。
如果此代码由 <script></script>
包装,则它会在 <script></script>
标记之后附加代码。
在这段代码中,当调用 addScript 函数时,然后 document.write 只需在文档中的 document.write 方法中写入字符串。现在你可以使用这个脚本了。