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

本文探讨了不同浏览器下CSS文件加载的onload及onreadystatechange事件的行为差异。详细分析了IE、Firefox、Safari、Chrome和Opera等浏览器对于这些事件的支持情况,并通过示例代码展示了事件触发的时机。
摘要由CSDN通过智能技术生成

1,onload事件

<!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" οnlοad="alert(this)"/>
 </HEAD>
 <BODY>
 </BODY>
</HTML>

IE6/7 :

2011042611431375.png

IE8/9 :

2011042611433320.png

Opera :

2011042611435180.png

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

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


2,onreadystatechange事件

<!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元素试试, 

<!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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值