Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用document.write在外部脚本中调用函数的内联脚本_Javascript_Asynchronous_Document.write_External Script_Inline Scripting - Fatal编程技术网

Javascript 使用document.write在外部脚本中调用函数的内联脚本

Javascript 使用document.write在外部脚本中调用函数的内联脚本,javascript,asynchronous,document.write,external-script,inline-scripting,Javascript,Asynchronous,Document.write,External Script,Inline Scripting,假设我有一个名为makeFields.js的脚本,其中包含该方法 function makeDateControls() { document.write(/* ... */); } 在我的HTML中,我链接到头部的脚本,如下所示: <head> <script type="text/javascript" src="makeFields.js"></script> </head> 然后在我的HTML中,我在头部外有一个内联脚本

假设我有一个名为
makeFields.js
的脚本,其中包含该方法

function makeDateControls() {

    document.write(/* ... */);

}
在我的HTML中,我链接到头部的脚本,如下所示:

<head>
<script type="text/javascript" src="makeFields.js"></script>
</head>

然后在我的HTML中,我在头部外有一个内联脚本:

<div>
<script>
    makeDateControls();
</script>
</div>

makeDateControls();
问题是:我能否依赖浏览器等待
makeFields.js
完成下载,然后再尝试调用
makeDateControls()
?我是将
makeFields.js
script标记放在头部还是正文中有关系吗?行为是否取决于是否存在
document.write()


虽然它似乎不起作用,但据我所知,这种方法没有任何问题。但是请记住,我并没有创建这个框架——我是团队中的新成员,所以更改并不容易。

浏览器从上到下处理HTML。除非您明确指定脚本应在处理完文档的其余部分后加载,否则脚本将在文档中它所在的位置加载和计算。@Cerbrus除了关于脚本加载之外,我的问题和您链接的问题没有任何共同点。这个问题是询问如何在主体加载后运行代码。我的代码是关于生成html时运行的代码(使用document.write)。@AmadeusDrZaius:你说得对,投票结果不正确。重新打开。无论如何,你真的不应该使用
document.write()
。您将不知道字符串添加到文档的何处。@Cerbrus
document.write()
包含在外部脚本的函数中,但该函数是从内联脚本调用的。接下来的问题是,这种交互对页面加载的(a)同步性有什么影响。它似乎可以工作,但我想知道它是如何工作的和/或是否只是巧合。“没有异步或延迟属性的脚本,以及内联脚本,在浏览器继续解析页面之前,会立即获取并执行。”。这就是像
$('div')…
这样的东西起作用的原因。这是编写脚本的标准方式。