Javascript JS代理模式
我使用此代码覆盖window.alert函数。 该函数将中断替换为\r\n。 它在Firefox中运行良好,但在IE中当然不行。 我收到错误:不支持属性或方法Javascript JS代理模式,javascript,jquery,design-patterns,proxy-pattern,Javascript,Jquery,Design Patterns,Proxy Pattern,我使用此代码覆盖window.alert函数。 该函数将中断替换为\r\n。 它在Firefox中运行良好,但在IE中当然不行。 我收到错误:不支持属性或方法 (function() { var proxied = window.alert; window.alert = function(txt) { txt = txt.replace(/<br>/g, "\r\n"); return proxied.apply(this, arguments); };
(function() {
var proxied = window.alert;
window.alert = function(txt) {
txt = txt.replace(/<br>/g, "\r\n");
return proxied.apply(this, arguments);
};
})();
(函数(){
var proxied=window.alert;
window.alert=函数(txt){
txt=txt.replace(/
/g,“\r\n”);
返回proxied.apply(这个,参数);
};
})();
请帮我找到解决办法!
谢谢如果window.alert在IE中不是“真正的”功能,我会这样做:
(function() {
var proxied = window.alert;
window.alert = function(txt) {
txt = txt.replace(/<br>/g, "\r\n");
return proxied(txt);
};
})();
(函数(){
var proxied=window.alert;
window.alert=函数(txt){
txt=txt.replace(/
/g,“\r\n”);
返回代理(txt);
};
})();
抱歉,未经测试,它能工作吗?这对于本机JavaScript函数很好,但对于主机对象的方法,如
窗口
,则非常危险。宿主对象不受本机JavaScript对象的常规规则约束,它们可以(而且确实)随心所欲地工作,在不同的浏览器中往往会有所不同。因此,我强烈建议不要在window.alert
或任何其他主机方法中使用此方法。您在哪一行得到错误?谢谢您的回复。现在错误消失,警报显示,但中断不会被替换。不过,它在FF中仍能正常工作。有什么想法吗?我改变了脚本中代码的位置,现在在IE和FF中都可以正常工作了。谢谢你,维克多@Tim,我很感激你的输入,我知道这不是最好的方法,但是我不得不将脚本中的警报函数替换为定制的警报函数。知道我的网站上有1000多个脚本,这是不可行的。