各浏览器对link标签onload/onreadystatechange事件支持的差异

1,onload事件

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE HTML>
<HTML>
 <HEAD>
    <meta charset="utf-8" />
    <title>Link Element onload</title>
    <link type="text/css" rel="stylesheet" href="http://i3.sinaimg.cn/rny/webface/login/css/login101021_min.css" onload="alert(this)"/>
 </HEAD>
 <BODY>
 </BODY>
</HTML>

IE6/7 :

IE8/9 :

Opera :

即IE6/7/8/9/Opera都支持onload事件, Firefox/Safari/Chrome不支持。

注:用JS创建link标签再添加到head中,情况如上。


2,onreadystatechange事件

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE HTML>
<HTML>
 <HEAD>
    <meta charset="utf-8" />
    <title>Link Element onreadystatechange</title>
    <link type="text/css" rel="stylesheet" href="http://i3.sinaimg.cn/rny/webface/login/css/login101021_min.css" onreadystatechange="alert(this)"/>
 </HEAD>
 <BODY>
 </BODY>
</HTML>

IE6/7/8/9中弹出了两次,其它浏览器均没有弹。说明只有IE支持link元素的onreadystatechange事件。弹出两次分别是readyState为loading,complete状态。可使用readyState来判断载入情况。我们再使用JS动态创建link元素试试, 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE HTML>
<HTML>
 <HEAD>
    <meta charset="utf-8" />
    <title>Link Element onreadystatechange</title>
 </HEAD>
 <BODY>
    <script>
        function createEl(type, attrs){
            var el = document.createElement(type),
                attr;
            for(attr in attrs){
                if(attrs.hasOwnProperty(attr)){
                    el.setAttribute(attr, attrs[attr]);
                }
            }
            return el;
        }
        var link = createEl('link', {
            href : 'http://i3.sinaimg.cn/rny/webface/login/css/login101021_min.css',
            rel  : 'stylesheet',
            type : 'text/css'
        });
        link.onreadystatechange = function(){
            alert(this)
        }
        document.getElementsByTagName('head')[0].appendChild(link);
    </script>
 </BODY>
</HTML>

IE6/7/8/9中仍然弹出了2次。Firefox/Safari/Chrome仍然没弹。貌似一切正常,但神奇的是这次在Opera中弹出了一次,说明Opera支持动态创建link元素时的onreadystatechange事件。


相关:

https://developer.mozilla.org/en/HTML/Element/link
http://msdn.microsoft.com/en-us/library/ms535848%28v=VS.85%29.aspx
http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-35143001

posted on   snandy  阅读(6833)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2011年4月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

统计

点击右上角即可分享
微信分享提示