Javascript Monkey补丁jquery函数内容

Javascript Monkey补丁jquery函数内容,javascript,jquery,Javascript,Jquery,提前谢谢你的帮助 我试图修补一个现有的javascript函数,以便它的一行指向一个新的位置。只需重新定义函数就很容易了,除非它是从包含动态内容的服务器端代码中呈现的 function GoPrint() { $.cookie('edit_child','on',{expires:28,path:'/'}); //Dynamically created (edit child could be off) window.open('../../Common/Output/HTMLt

提前谢谢你的帮助

我试图修补一个现有的javascript函数,以便它的一行指向一个新的位置。只需重新定义函数就很容易了,除非它是从包含动态内容的服务器端代码中呈现的

function GoPrint() {
    $.cookie('edit_child','on',{expires:28,path:'/'}); //Dynamically created (edit child could be off)
    window.open('../../Common/Output/HTMLtoPDF.aspx','print'); //Always static, need to change this call.
}
在我的示例中,创建cookie的第一行是在服务器端动态创建的,因此属性可以设置为off

我需要更改window.open以调用其他页面,而不是htmltopdf页面

尽管令人讨厌,但我想在HTMLtoPDF文本上用替换来重新定义函数,以指向新页面

我已经在下面开始了,但不知道如何获取函数的现有内容来更改它

function($){

            var _oldPrint = $.fn.GoPrint;

            $.fn.GoPrint = function(arg1,arg2){
                   return _oldPrint.call(this,'',);
            };
        })(jQuery);

有什么建议吗?

一种方法是在旧函数上调用
toString
,用新的URL替换旧的URL,然后评估结果,但必须考虑到安全问题

纯粹就安全性而言,更安全的方法是对
窗口进行猴子补丁。在
GoPrint
的猴子补丁中打开
函数

function($) {

  var _oldPrint = $.fn.GoPrint;

  $.fn.GoPrint = function(arg1, arg2) {
    var _oldopen = window.open;

    window.open = function() {
      _oldopen.call('YOUR_URL_HERE', 'print');
    };

    return _oldPrint.call(this);

    window.open = _oldopen;
  };
})(jQuery);