我需要用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()函数中的各个行会更简单;但是,我认为学习如何从“函数”到结束“}”中选择和替换任何所需的函数是最有用的,无论其中的语句如何。
答案 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) {
这样,当你的注入器运行时,它会用你想要的脚本代码覆盖旧函数的前面,并将旧函数重命名为其他东西(永远不会被调用)。