每日两道前端面试题 - 20190131

89241846 2019-06-30

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是比较安全,也实现兼容浏览器的效果

每日两道前端面试题 - 20190131

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>

相关推荐