加载页面时Javascript代码的执行顺序。

加载页面时Javascript代码的执行顺序。
1。在HTML中嵌入javascript的方法
1。直接在标记对之间的Javascript代码中
2。用标记的SRC属性生成外部js文件
三.在事件处理程序中,如:单击我
4。作为URL的主体,URL使用一种特殊的Javascript:一种协议,如:单击我
5。用document.write写入新的Javascript代码()Javascript本身的方法
6。使用Ajax异步获取Javascript代码,然后执行
Javascript中编写的第三和第四方法需要被触发执行,因此除非特别设置,否则该页不会被执行。

二、页面执行顺序中的Javascript
1。页面javascript代码是HTML文档的一部分,所以javascript实现页面加载时,要引入顺序来标记外观的顺序,或者通过引入SRC标记外部js,都是按照语句的顺序实现的,而实现过程是文档加载的一部分。
2。每个脚本定义的全局变量和函数可以由后执行脚本调用。
3的召唤。变量必须提前声明,否则所获得的变量的值是未定义的。
复制代码代码如下所示:
/ / < { CDATA {!
警报(TMP);未定义的输出
var = 1;
警报(TMP); /输出1
>

4、在同一个脚本中,函数定义可以出现在函数调用后面,但是如果它在两段代码中,函数调用在第一个代码中,它将声明函数不定义错误
复制代码代码如下所示:
/ / < { CDATA {!
(aa);浏览器错误
>
/ / < { CDATA {!
aa(1);输出
函数aa(){警报(1);}
>

5.document.write()将输出写入的脚本文件的位置。解析后的documemt.write文档内容(),浏览器继续解析document.write输出(),然后继续解析HTML文档。
复制代码代码如下所示:
/ / < { CDATA {!
document.write('');
document.write('');
document.write('alert(2);')
('alert document.write(我+ Javascript);');
document.write('');
>
/ / < { CDATA {!
警报(3);
>

对test.js含量:
复制代码代码如下所示:
VaR Javascript = 1;
警报(Javascript);

Firefox和Opera中弹出值的顺序是:1, 2,我1, 3岁。
在IE弹出值的顺序是2, 1, 3,和浏览器的Javascript错误:未定义
原因可能是IE在document.write,不等待加载Javascript源代码的下一行执行后,导致2弹出,并执行document.write(document.write(我+ Javascript)')称为Javascript,Javascript和不确定的,所以错了。

为了解决这个问题,您可以使用HTML解析来解析HTML标签,然后执行下一个原则,将代码拆分到实现中:
复制代码代码如下所示:
/ / < { CDATA {!
document.write('');
>
/ / < { CDATA {!
document.write('');
document.write('alert(2);')
('alert document.write(我+ Javascript);');
document.write('');
>
/ / < { CDATA {!
警报(3);
>

所以IE和其他浏览器下的输出值顺序是一样的:1, 2,我1, 3。

三。如何更改页面中Javascript的执行顺序
1。使用onload
复制代码代码如下所示:
/ / < { CDATA {!
在window.onload = F;
函数f(){警报(1);}
警报(2);
>

输出值的顺序是2和1。

值得注意的是,如果有多个winodws.onload,唯一最有效的措施之一就是要解决:
复制代码代码如下所示:
在window.onload =功能({ f)(F1);(F2);(。});…

使用2层DOM事件类型
复制代码代码如下所示:
如果(文件。addEventListener){
Window.addEventListener(载荷、F、假);
Window.addEventListener(载荷、F1、假);

其他{ }
window.attachevent('onload,F);
window.attachevent('onload,F1);

}

2.ie可以推迟,推迟是代码下载,文件加载完成后立即执行,有点类似在window.onload,但没有在window.onload的局限,可以反复使用,但只在伊江,所以在上面的例子中可以修改成为
复制代码代码如下所示:
/ / < { CDATA {!
document.write('');
document.write('');
document.write('alert(2);')
('alert document.write(我+ Javascript);');
document.write('');
>
/ / < { CDATA {!
警报(3);
>

所以IE不会出错。输出值的顺序是1, 3, 2,我是1。

当HTML解析器遇到一个脚本,它必须终止解析常规文件和等待脚本执行。为了解决这一问题,HTML4标准定义了延迟。通过延迟,提示浏览器可以继续解析HTML文档和延迟执行脚本。这延迟是非常有用的当脚本从外部文件加载,使浏览器不需要等到所有的外部文件loaded.ie目前支持延迟属性的浏览器,但是IE不能正确实施延迟属性,因为延迟的脚本总是推迟到文件的结束,而不是延迟到下一个非延迟的脚本。这意味着执行伊江延迟脚本序列是相当混乱和不定义任何变量和函数,后者无需延迟脚本,脚本的执行时间推迟IE应该在HTML文档树的建立,之前在window.onload。

三.使用Ajax。
由于XMLHttpRequest可以判断外部文件加载的状态,它可以改变代码的加载顺序
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部