日期:2014-05-16  浏览次数:20322 次

javascript 系统方法覆盖了,再调用问题
就是我 现在需要暂时 覆盖掉系统的方法
window.showModalDialog()

这样子覆盖的:
window.showModalDialog = function({参数}){
    //我需要判断其中一个 参数 让我使用我覆盖了的系统方法 还是我自己写的方法
   if(pram1){
      //如果成立我要调用 系统的那个 
      window.showModelDialog(......);
   }else{
     //不成立 就调用自己写的代码
   }
}


就是在条件成立的时候  我需要再次调用 那个被我覆盖的 方法怎么做呢?


javascript function showModelDialog js系统方法覆盖

------解决方案--------------------
用代理模式就行。参考下面

原理详见:http://stackoverflow.com/questions/1729501/javascript-overriding-alert
    <script type="text/javascript">
        (function() {
            var proxied = window.showModalDialog;
            window.showModalDialog = function() {
                if (true) {
                     return proxied.apply(this, arguments);
                }
                else {
                   alert("Do your works");
                }
            };
        })();

        window.showModalDialog("http://www.baidu.com", "", "dialogWidth=600px;dialogHeight=300px");
    </script>