Javascript 关于html中控制流的顺序<;脚本>;
我有这样一个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
<!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属性和介于和之间的内容。这可能会导致不可预测的结果。”(顺便问一下,你认为我的答案值得投票吗?)