2010-06-17 57 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

在這行做你的錯誤? – 2010-06-17 09:36:53

回答

2

我會做這個,萬一window.alert是不是一個「真正」的功能在IE:

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

對不起,未經測試,它的工作原理?

+0

謝謝你的回覆。現在錯誤消失了,警報顯示,但是中斷不會被替換。儘管如此FF仍然可以正常工作。有任何想法嗎? – Fluitketel 2010-06-17 09:51:07

+0

我在劇本改變了代碼的位置和現在工作正常在IE和FF。謝謝維克多! @Tim,我你並欣賞投入,我知道這是不是這樣做的最佳方式,但除此之外,我在我的腳本來代替警報功能,定製的報警功能。知道我的網站上有超過1000個腳本,這是不可行的。 – Fluitketel 2010-06-17 11:28:35

0

這將是罰款,原生的JavaScript功能,但與主機的對象,如window的方法非常危險。主機對象不受本地JavaScript對象的一般規則,並可以(做)的行爲主要是因爲他們請,經常在不同的瀏覽器不同。因此,我強烈建議您不要對window.alert或任何其他主機方法追求這個想法。