Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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 关于html中控制流的顺序<;脚本>;_Javascript_Html_Html5 - Fatal编程技术网

Javascript 关于html中控制流的顺序<;脚本>;

Javascript 关于html中控制流的顺序<;脚本>;,javascript,html,html5,Javascript,Html,Html5,我有这样一个html页面: <!DOCTYPE HTML> <html style="width: 100%; height: 100%"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style> </style> </head> <body style="height: 1

我有这样一个html页面:

<!DOCTYPE HTML>
<html style="width: 100%; height: 100%">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style>
    </style>
</head>
<body style="height: 100%; width: 100%; margin: 0">
    <div id="outerParentDiv" style="width:100%; height: 100%;">  
    </div>
    <script src="<script1 - takes very long to download>">
     alert('hi1');
    </script>
    <script src="<script2 - takes very short to download>">
      alert('hi2');
    </script>
</body>
</html>

警报(“hi1”);
警报(“hi2”);
我可以假设流程为-下载脚本1>>执行警报('hi1')>>下载脚本2>>执行警报('hi2')) 或者它是特定于浏览器的-如果是,哪些浏览器做什么


谢谢,这是正确的。默认情况下,浏览器逐行解释HTML源代码。但是,浏览器的某些配置可能会同时发送多个HTTP请求(已编辑),但代码中打印的执行顺序是有保证的。

不要同时使用
src
属性和
之间的内容。这可能导致不可预测的结果。请参阅。

浏览器很可能会并行下载两个脚本(除非其中一个脚本已被缓存),但执行顺序保证是有序的。此外,在加载并执行脚本之前,脚本后面的页面部分不会成为脚本的一部分。这确保了您可以在代码中安全地包含库,并期望它们在主脚本运行时出现

如前所述,您不应该对
src
和自己的内容使用
script
标记

<script src = "http://path.to.a.cdn/jquery-latest.min.js"></script>
<script>
  $(function(){
    ...
  })
</script>

$(函数(){
...
})
您可以使用
async
defer
属性覆盖此行为

异步的 设置此布尔属性以指示浏览器应异步执行脚本(如果可能)。它对内联脚本(即没有src属性的脚本)没有影响

推迟 此布尔属性设置为向浏览器指示脚本将在解析文档后执行。由于此功能尚未在所有其他主流浏览器中实现,因此作者不应假定脚本的执行实际上会延迟。永远不要从
延迟
脚本调用
document.write()
(由于Gecko 1.9.2,这将吹走文档)。对于没有src属性的脚本,不应使用defer属性

这两个属性在IE 10之前的IE中都不起作用,所以无论如何都不要依赖于未按顺序执行的脚本

兼容性表:


参考:

脚本将按照包含的顺序执行。有些浏览器可能会并行下载它们(当然,在这种情况下,第二个脚本不是单独下载的),所以有些浏览器的答案是否定的?我能得到关于哪些浏览器会这样做的文档(官方)吗?谢谢。答案是“是的”。请注意我在“执行”和“下载”之间所做的区分……如果没有包含async或deffer属性,则脚本标记(无论是外部的还是内部的)将按照它们包含的顺序进行解析。看看这个帖子:在3426名声之后,你仍然在发布这样的答案:P我的意思是看这个问题。这就是他要求的吗?这很清楚。OP询问脚本的执行顺序。答案是:如果OP按照问题中的方式来做,谁知道呢?根据浏览器的特殊性,
警报
s可能根本不会执行。哦,对不起,您似乎在告诉OP编写脚本标记的正确方法。“不要同时使用src属性和介于和之间的内容。这可能会导致不可预测的结果。”(顺便问一下,你认为我的答案值得投票吗?)