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);
};
})();
请帮我看看解决办法! 谢谢
我会做这个,万一window.alert是不是一个“真正”的功能在IE:
(function() {
var proxied = window.alert;
window.alert = function(txt) {
txt = txt.replace(/<br>/g, "\r\n");
return proxied(txt);
};
})();
对不起,未经测试,它的工作原理?
谢谢你的回复。现在错误消失了,警报显示,但是中断不会被替换。尽管如此FF仍然可以正常工作。有任何想法吗? – Fluitketel 2010-06-17 09:51:07
我在剧本改变了代码的位置和现在工作正常在IE和FF。谢谢维克多! @Tim,我你并欣赏投入,我知道这是不是这样做的最佳方式,但除此之外,我在我的脚本来代替警报功能,定制的报警功能。知道我的网站上有超过1000个脚本,这是不可行的。 – Fluitketel 2010-06-17 11:28:35
这将是罚款,原生的JavaScript功能,但与主机的对象,如window
的方法非常危险。主机对象不受本地JavaScript对象的一般规则,并可以(做)的行为主要是因为他们请,经常在不同的浏览器不同。因此,我强烈建议您不要对window.alert
或任何其他主机方法追求这个想法。
在这行做你的错误? – 2010-06-17 09:36:53