IE和DOM 事件模型之间存在哪些主要差别
1 - 冒泡型事件
事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发
IE 5.5 div -> body -> document
IE 6.0 div -> body -> document
Mozila 1.0 div -> body -> html -> document -> window
2.捕获型事件:事件从最不精确的对象(document对象)开始触发,然后到最精确.
3.DOM事件流:同时支持两种事件模型:捕获型事件和冒泡型事件,但是,捕获型事件先发生,两种事件流会触及DOM中
的所有对象,从document对象开始,也在document对象结束。
DOM事件模型最独特的性质是:文本节点也触发事件.IE不会
支持W3C标准的浏览器在添加事件时用addEventListener(event,fn,useCapture)方法
第3个参数useCapture是一个Boolean值,用来设置事件是在事件捕获时执行,还是事件冒泡时执行。
而不兼容W3C的浏览器(IE)用attachEvent()方法,此方法没有相关设置,不过IE的事件模型默认是在事件冒泡时执行的,也就是在useCapture等于false的时候执行,所以把在处理事件时把useCapture设置为false是比较安全,也实现兼容浏览器的效果。
XMLHttpRequest
作用:XMLHttpRequest对象用于在后台与服务器交换数据
简介:XMLHttpRequest是开发者的梦想,因为可以
在不重新加载页厕所情况下更新网页
在页面已加载后从服务器请求数据
在页面已加载后从服务器接收数据
在后台向服务器发送数据
创建XMLHttpRequest对象的语法:
xmlhttp = new XMLHttpRequest();
若是IE5或IE6,则使用
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
实例:
<html>
<head>
<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
{// code for IE7, Firefox, Opera, etc.
xmlhttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=state_Change;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
else
{
alert("Your browser does not support XMLHTTP.");
}
}
function state_Change()
{
if (xmlhttp.readyState==4)
{// 4 = "loaded"
if (xmlhttp.status==200)
{// 200 = "OK"
document.getElementById('A1').innerHTML=xmlhttp.status;
document.getElementById('A2').innerHTML=xmlhttp.statusText;
document.getElementById('A3').innerHTML=xmlhttp.responseText;
}
else
{
alert("Problem retrieving XML data:" + xmlhttp.statusText);
}
}
}
</script>
</head>
<body>
<h2>Using the HttpRequest Object</h2>
<p><b>Status:</b>
<span id="A1"></span>
</p>
<p><b>Status text:</b>
<span id="A2"></span>
</p>
<p><b>Response:</b>
<br /><span id="A3"></span>
</p>
<button onclick="loadXMLDoc('/example/xdom/note.xml')">Get XML</button>
</body>
</html>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。