在IE下,event物件有srcElement屬性,但是沒有target屬性;Firefox下,even物件有target屬性,但是沒有srcElement屬性.。
解決方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來代替IE下的event.srcElement或者Firefox下的event.target.。
同時注意event的 相容性問題。 感覺這個挺好,可以捕獲當前事件作用的物件,如event.srcElement.tagName可以捕獲活動標記名稱。
注意獲取的標記都以大寫表示,如"TD","TR","A"等。所以把看過的一些抄下來,不記得的時候再來看看。 <script type="text/javascript">
function tdclick(){
if(event.srcElement.tagName.toLowerCase()=='td')
alert("行:"+(event.srcElement.parentNode.rowIndex+1)+"列:"+(event.srcElement.cellIndex+1));
}
</script> event.srcElement從字面上可以看出來有以下關鍵字:事件,源 他的意思就是:當前事件的源, 我們可以呼叫他的各種屬性 就像:document.getElementById("")這樣的功能, 經常有人問 firefox 下的 event.srcElement 怎麼用,在此詳細說明: IE下,event物件有srcElement屬性,但是沒有target屬性;Firefox下,event物件有target屬性,但是沒有srcElement屬性.但他們的作用是相當的,即: firefox 下的 event.target = IE 下的 event.srcElement 解決方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來代替IE下的event.srcElement或者Firefox下的event.target. 在 ie中處理事件直接使用window.event物件即可,但在firefox中,是沒有 window.event物件的,函式需要使用事件的時候,
需要在事件發生時把事件作為引數傳遞給函式,不象在ie中,事件物件是全域性的,隨處都可以訪 問.下面這個getEvent()函式可以相容firefox和ie,
只需要在訪問事件物件的函式的開始呼叫getEvent()即可,不用再把事件作為 引數傳遞.以下程式碼已經實驗通過!
function myfunc()
{
var evt=getEvent();
var element=evt.srcElement || evt.target;
} function getEvent()
{
if(document.all)
{
return window.event;//如果是ie
}
func=getEvent.caller;
while(func!=null)
{
var arg0=func.arguments[0];
if(arg0)
{
if((arg0.constructor==Event || arg0.constructor ==MouseEvent)
||(typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func=func.caller;
}
return null;
}