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可以判断外部文件加载的状态,它可以改变代码的加载顺序