0

我需要用 Fiddler 重写一个 JavaScript 函数。我相信这个答案部分解决了这个问题;但是,我仍在搜索 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() 函数中的各个行会更简单;但是,我认为学习如何从“函数”选择和替换任何所需的函数到它的结束“}”将是最有用的,而不管其中的语句如何。

4

2 回答 2

0

函数的来源可以从那里得到,traceThis.toString ()你可以做任何你想做的改变,然后使用重新创建函数new Function

于 2012-11-07T17:48:44.277 回答
0

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

即,只需对以下内容进行直接字符串替换:

function traceThis(message) {

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

function OriginalVersionOfTraceThis(message) {

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

于 2012-11-07T22:59:22.573 回答