2011-10-21 3 views
0
에 오류가 발생

처럼 내 코드 보인다 : 그것은 IE6, IE7, IE8, 크롬, 파이어 폭스, 사파리 (Mac과 Windows 모두)하지만 IE9에서 작동하여 Prototype.js Element.update()는 IE9

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

.

IE9는 "DOM 예외 : INVALID_CHARACTER_ERR (5)"을 throw하고 prototype.js의 중간을 e.setAttribute (c, f)로 지정합니다. 나는 c를 "{}"로 표시하는 시계 창을 사용하여 어떤 의미도 가지지 않습니다.

모든 연구에서 IE9와 호환되는 것으로 보이는 프로토 타입 1.7이 포함 된 Scriptaculous 1.9.0을 사용하고 있습니다.

IE에 테이블에 대한 특별한 요구 사항이 있다는 것을 알고 있습니다. 이유는 내가 입니다.

내가 뭘 잘못하고 있니?

답변

0

메서드가 Object.prototype에 추가되면 IE9에서 작동하도록 Element # update의 defineProperty를 사용하여 메서드를 unenumerable로 만들어야 할 수 있습니다. 코드가 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(); 
    }; 
} 
내 경우

, 도서관은 다음과 같이했다