如何使用RegEx和Fiddler选择和替换整个JavaScript函数

时间:2012-11-07 17:05:16

标签: javascript regex fiddler

我需要用Fiddler重写一个JavaScript函数。我相信this answer可以部分解决问题;但是,我仍在搜索RegEx信息。例如:

function traceThis(message) {
   //setTimeout(function() { window.opener.childWindowMessageHandler(message);}, 100);
   //if (!window.console) console = {};
   //console.log(message);
}

需要成为:

function traceThis(message) {
   setTimeout(function() { window.opener.childWindowMessageHandler(message);}, 100);
   if (!window.console) console = {};
   console.log(message);
}

我认为匹配和替换traceThis()函数中的各个行会更简单;但是,我认为学习如何从“函数”到结束“}”中选择和替换任何所需的函数是最有用的,无论其中的语句如何。

2 个答案:

答案 0 :(得分:0)

可以通过traceThis.toString ()获取函数的来源。从那里,您可以执行任何您想要的更改,然后使用new Function

重新创建函数

答案 1 :(得分:0)

HBP的答案不起作用,因为在脚本实际运行之前,toString()函数不可用。但他确实指出了一种解决这个问题的简单方法,可能不需要JS解析器或复杂的正则表达式。

即,只需直接替换字符串:

function traceThis(message) {

// Here's my NewFunction
function traceThis(message)
{
   // My new instructions here
}

function OriginalVersionOfTraceThis(message) {

这样,当你的注入器运行时,它会用你想要的脚本代码覆盖旧函数的前面,并将旧函数重命名为其他东西(永远不会被调用)。