我的代码如下:
var node = parent.insertRow(before);
node = $(node);
node.update('<td>Hello</td><td>Hello</td><td>Hello</td>');
适用于IE6,IE7,IE8,Chrome,Firefox,Safari(包括Mac和Windows),但不适用于IE9。
IE9抛出“DOM异常:INVALID_CHARACTER_ERR(5)”并指向prototype.js中间的e.setAttribute(c,f)。我使用了监视窗口,显示c为“{}”,这对我没有任何意义。
我正在使用Scriptaculous 1.9.0,其中包括Prototype 1.7,所有研究都显示为IE9兼容。
我知道IE对表有特殊要求,这就是我使用的原因 a Element#update
我做错了什么?
答案 0 :(得分:0)
如果将方法添加到Object.prototype,则可能需要使用defineProperty将它们设置为不可数,以使Element#update能够在IE9上运行。当代码修改Object.prototype时,元素#update很脆弱。
就我而言,图书馆做了类似的事情:
Object.prototype.aFunc = function () {
return doStuff();
};
我特意使用IE9来修复它:
if (navigator.userAgent.indexOf("Trident/5") > -1) {
Object.defineProperty(Object.prototype, 'aFunc', {
value : function () {
return doStuff();
},
enumerable : false
});
} else {
Object.prototype.aFunc = function () {
return doStuff();
};
}