2012-11-23 83 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

相关问题