2

这是我的代码。

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("", "");
    }
}

但仍然无法正常工作。希望有人能帮助我。

4

1 回答 1

4

window.eventFirefox 中不存在,因此如果您尝试访问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;
}

要获取触发事件的元素的引用,我们必须event.target在兼容 W3C 的浏览器和event.srcElementIE 中访问:

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

quirksmode.org是了解事件处理和浏览器差异的重要来源。

于 2012-11-23T08:38:28.850 回答