Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS代理模式_Javascript_Jquery_Design Patterns_Proxy Pattern - Fatal编程技术网

Javascript JS代理模式

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); };

我使用此代码覆盖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);
  };
})();
(函数(){
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多个脚本,这是不可行的。