2012-11-23 78 views
2

這是我的代碼。window.event.srcElement無法在Mozilla Firefox中工作

function postbackOnCheck() { 
    var o = window.event.srcElement; 

    if (o.tagName == 'INPUT' && o.type == 'checkbox' && o.name != null && o.name.indexOf('CheckBox') - 1) 
    { 
     __doPostBack("", ""); 
    } 
} 

我做了很少的研究。發現window.event.srcElement無法在Firefox中使用。所以我改變編碼爲..

function postbackOnCheck() { 
    var o = window.event.srcElement || e.target; 

    if (o.tagName == 'INPUT' && o.type == 'checkbox' && o.name != null && o.name.indexOf('CheckBox') - 1) 
    { 
     __doPostBack("", ""); 
    } 
} 

但仍然無法正常工作。希望任何人都可以幫助我。

+2

您正試圖使用​​'e.target',但'e'不存在。你能顯示調用'postbackOnCheck'的代碼嗎? –

+0

你能否提供更多的細節。你在寫這個函數的背景是什麼? – Ramya

回答

4

window.event不會在Firefox中存在,因此,如果您嘗試訪問window.event.srcElement它會拋出一個錯誤。即使它工作,你也從未在任何地方定義過e,所以e.target也會出錯。

在W3C兼容的瀏覽器,該事件對象作爲第一個參數的事件處理程序通過。在IE中,可通過window.event訪問。
因此,去偶對象的引用,我們要做的:

function eventHandler(event) { 
    // if `event` is not defined, we fall back to `window.event` 
    event = event || window.event; 
} 

爲了達到這樣的觸發事件的元素的引用,我們要訪問W3C兼容的瀏覽器event.targetevent.srcElement在IE:

// if `event.target` is not defined, we fall back to `event.srcElement` 
var target = event.target || event.srcElement; 

的重要來源,以瞭解事件處理和瀏覽器的差異是quirksmode.org

相關問題