0

我有这段代码,其中数据是包含来自响应 servlet 的行的 DWR 对象。img.onclick 使用 IE9 工作,但我需要它也可以在 IE8 上工作。有什么想法?谢谢!

function functionA(data){
  var getPrintCred = function(data) { 
                        var img = document.createElement("img");
                        img.src = "images/image1.jpg";
                        img.style.width="20px";
                        img.style.height="18px";
                        img.alt = data.field1;
                        img.title = getRegimen;
                        img.onclick = function(target) { functionB(target) };
                        return img;
  };
}

function functionB(data){
                var var1= data.target.title;
                var var2= data.target.alt;
                if ( var1 != null && var1 == "IM")
                    var1 = "valueA";
                else
                    var1 = "valueB";
                functionC(var2,var1);
}

function functionC(param1, param2){
 alert ('Using IE 9 works, but IE8 no works...help me!'+param1+'-'param2);
}
4

2 回答 2

1

即8不支持target事件对象中的属性,你必须使用srcElement属性。

function functionB(data){
            var var1= (data.target || data.srcElement).title;
            var var2= data.target.alt;
            if ( var1 != null && var1 == "IM")
                var1 = "valueA";
            else
                var1 = "valueB";
            functionC(var2,var1);
}

此外,看起来没有事件对象被传递给 onclick 事件处理程序,因此您可以将 window.event 作为后备传递。

img.onclick = function(target) { functionB(target || event) };

http://jsfiddle.net/mowglisanu/wkB6K/

于 2012-11-26T03:36:08.160 回答
0

试试下面的

function functionA(data){
    var getPrintCred = function(data) { 
        var img = document.createElement("img");
        img.src = "images/image1.jpg";
        img.style.width="20px";
        img.style.height="18px";
        img.alt = data.field1;
        img.title = getRegimen;
        img.onclick = function(target) {
            target = target || window.event;
            functionB(target);
        };
        return img;
    };
}

function functionB(data){
    var var1= data.target.title;
    var var2= data.target.alt;
    if ( var1 != null && var1 == "IM")
        var1 = "valueA";
    else
        var1 = "valueB";
    functionC(var2,var1);
}

function functionC(param1, param2){
    alert ('Using IE 9 works, but IE8 no works...help me!'+param1+'-'param2);
}

在 IE 中,事件对象不作为参数传递给事件处理程序方法,但它在全局属性window.event对象中可用。

于 2012-11-26T03:53:06.903 回答