JS代理模式

问题描述:

我使用此代码覆盖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

我会做这个,万一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

这将是罚款,原生的JavaScript功能,但与主机的对象,如window的方法非常危险。主机对象不受本地JavaScript对象的一般规则,并可以(做)的行为主要是因为他们请,经常在不同的浏览器不同。因此,我强烈建议您不要对window.alert或任何其他主机方法追求这个想法。