2011-10-21 37 views
0

我的代碼如下所示:的Prototype.js Element.update()拋出錯誤的IE9

var node = parent.insertRow(before); 
node = $(node); 
node.update('<td>Hello</td><td>Hello</td><td>Hello</td>'); 

它適用於IE6,IE7,IE8,Chrome瀏覽器,火狐,Safari(Mac和Windows),但不是IE9 。如果IE9拋出一個「DOM異常:INVALID_CHARACTER_ERR(5)」,並將prototype.js指向e.setAttribute(c,f)的中間位置。我使用了顯示c爲「{}」的監視窗口,這對我沒有任何意義。

我使用Scriptaculous 1.9.0,其中包括所有研究顯示爲IE9兼容的Prototype 1.7。

我知道IE對錶格有特殊要求,這就是我使用 a Element#update的原因。

我在做什麼錯?

回答

0

如果將方法添加到Object.prototype,那麼可能需要使用defineProperty for Element#update來使其工作在IE9上,以使其不可用。代碼修改Object.prototype時,元素#更新很脆弱。

在我的情況下,庫做了這樣的事情:

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