1.Event使用
IE可以直接使用event對象,但其他引擎不可以直接使用。
<input type="button"onclick="doIt">
<script>
function doIt{
alert(event);
}
</script>
上面代碼在Firefox等瀏覽器中不能正常工作,這是因為Firefox瀏覽器中沒有默認的event對象,只能在事件發生的現場使用event對象。兼容的方法如下:
<input type="button"onclick="doIt(event)">
<script>
function doIt(oEvent){
alert(oEvent);
}
</script>
2.event.srcElement[IE]和event.target[Moz]
在Firefox等引擎下的event.target相當於IE下的event.srcElement,不過在細節上有區別,event.srcElement返回一個Html Element,而event.target返回的是個節點,該節點包括文本節點。比較下面示例代碼的區別和聯繫。
(1)IE使用event.srcElement
<table border="1"onclick="doIt">
<tr><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
<script>
function doIt{
alert(event.srcElement.tagName);
}
</script>
(2)非IE瀏覽器使用event.target
<table border="1"onclick="doIt">
<tr><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
<script>
function doIt(oEvent){
var Target=oEvent.target;
while(oTarget.nodeType!=1)
Target=oTarget.parentNode;
alert(oTarget.tagName);
}
</script>
3.獲取鍵盤值
不同引擎獲取鍵盤值的途徑和方法是不同的。
(1)IE使用event.keyCode
<input type="text"onkeypress="doIt">
<script>
function doIt{
alert(event.keyCode);
}
</script>
(2)非IE瀏覽器使用event.which
<input type="text"okeypress="doIt(event)">
<script>
function doIt(oEvent){
alert(oEvent.which)
}
</script>
4.獲取鼠標指針的絕對位置
IE通過event對象的event.x和event.y屬性獲取鼠標指針的絕對位置,而Firefox等引擎通過event對象的event.pageX和event.pageY獲取鼠標指針的絕對位置。例如,通過如下方法可以兼容不同引擎的用法。
<ponclick="doIt(event)">
<script>
function doIt(oEvent){
var posX=oEvent.x?oEvent.x:oEvent.pageX;
var posY=oEvent.y?oEvent.y:oEvent.pageY;
alert("X:"+posX+"\nY:"+posY)
}
</script>
5.獲取鼠標指針的相對位置
IE通過event對象的event.offsetX和event.offsetY屬性獲取鼠標指針的相對位置,而Firefox等引擎通過event對象的event.layerX和event.layerY獲取鼠標指針的相對位置。例如,通過如下方法可以兼容不同引擎的用法。
<ponclick="doIt(event)">
<script>
function doIt(oEvent){
var posX=oEvent.offsetX?oEvent.offsetX:oEvent.layerX;
var posY=oEvent.offsetY?oEvent.offsetY:oEvent.layerY;
alert("X:"+posX+"\nY:"+posY)
}
</script>
6.綁定事件
IE通過attachEvent、detachEvent方法為DOM對像綁定事件、註銷事件,而Firefox等引擎通過addEventListener、removeEventListener方法為DOM對像綁定事件、註銷事件。
(1)IE
<input type="button"id="testBT">
<script>
var oButton=document.getElementById("testBT");
oButton.attachEvent("onclick",clickEvent);
function clickEvent{
alert("Hello,World!");
}
</script>
(2)Firefox
<input type="button"id="testBT">
<script>
var oButton=document.getElementById("testBT");
oButton.addEventListener("click",clickEvent,true);
function clickEvent{
alert("Hello,World!");
}
</script>
注意,在IE中要在事件前加on前綴,而在Firefox等引擎中不用加。
7.獲取事件目標源
在IE下,event對像使用srcElement屬性獲取當前事件的目標元素,不支持target屬性。而其他引擎正好相反,event對像使用target屬性獲取當前事件的目標元素,不支持srcElement屬性。可以使用下面代碼進行兼容。
obj=event.srcElement?event.srcElement:event.target;