2010-06-17 4 views
2

이 코드를 사용하여 window.alert 함수를 재정의합니다. 이 함수는 나누기를 \ r \ n으로 대체합니다. Firefox에서는 잘 작동하지만 IE에서는 그렇지 않습니다. 오류가 발생했습니다. 속성 또는 메서드가 지원되지 않습니다.JS 프록시 패턴

(function() { 
    var proxied = window.alert; 
    window.alert = function(txt) { 
    txt = txt.replace(/<br>/g, "\r\n"); 
    return proxied.apply(this, arguments); 
    }; 
})(); 

해결책을 찾도록 도와주십시오. 는 당신에게 감사

+0

어느 라인에서 오류가 발생합니까? –

답변

2

내가 IE에서 "진짜"기능이는 Window.alert을하지 않는 경우에는이를 할 것이다 :

(function() { 
    var proxied = window.alert; 
    window.alert = function(txt) { 
    txt = txt.replace(/<br>/g, "\r\n"); 
    return proxied(txt); 
}; 
})(); 

검증되지 않은, 죄송합니다, 그것은 작동합니까에게?

+0

답장을 보내 주셔서 감사합니다. 이제 오류가 사라지고 경고가 표시되지만 중단은 대체되지 않습니다. 그래도 여전히 FF로 잘 작동합니다. 어떤 아이디어? – Fluitketel

+0

필자의 스크립트에서 코드의 위치가 변경되었으므로 이제 IE와 FF 모두에서 제대로 작동합니다. 빅터 감사합니다! @Tim, 나는 당신의 의견을 appriciate, 나는 그것을하는 가장 좋은 방법은 아니지만, 그렇지 않으면 내 스크립트의 경고 기능을 사용자 정의 만든 경고 기능을 대체했다. 내 웹 사이트에 1000 개가 넘는 스크립트가 있다는 것을 알면 그건 불가능합니다. – Fluitketel

0

네이티브 JavaScript 기능에서는 문제가 없지만 window과 같은 호스트 개체의 메서드에서는 매우 위험합니다. 호스트 객체는 기본 JavaScript 객체의 일반적인 규칙을 따르지 않으며 브라우저마다 다를 수 있습니다. 따라서 window.alert 또는 다른 호스트 방법에 대해서는이 아이디어를 추구하지 않는 것이 좋습니다.