JS代理模式

时间:2010-06-17 09:17:01

标签: 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);
  };
})();

请帮我找到解决方案! 谢谢

2 个答案:

答案 0 :(得分:2)

我会这样做,以防wind​​ows.alert不是IE中的“真实”功能:

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

抱歉,未经测试,是否有效?

答案 1 :(得分:0)

这适用于本机JavaScript函数,但对于window等宿主对象的方法非常危险。主机对象不受本机JavaScript对象的正常规则的约束,并且可以(并且确实)在很大程度上按照它们的喜好运行,在不同的浏览器中通常是不同的。因此,我强烈建议不要对window.alert或任何其他主机方法采用这个想法。