26

我正在考虑将 Fiddler 用于以下目的......

我有一个基于 JavaScript 的服务,我想向潜在客户展示。为了向他们展示他们的网站在安装(即包含)我的脚本后会是什么样子,我想在我的 PC 上设置 Fiddler,以便在获取客户的网站时,

<script type="text/JavaScript" src="myscript.js"></script>

行将包含在 HTML<head>部分中。

这可以用 Fiddler 轻松完成吗?有人可以指出我在哪里可以找到涵盖该文件的文档,如果是的话?

谢谢!

- - 更新 - -

目前我已经求助于使用 BHO 将我的脚本添加到页面中。我在 onDocumentComplete 时使用 execScript() 来运行一段简单的 JavaScript,它将我需要的 .js 文件附加到页面中。但是 EricLaw 的指针和 jitter 的回答似乎是一种更完整(和优雅)的方式来做我需要的事情。

如果有人感兴趣,我可以在这里上传 BHO 代码。-谢谢!

4

3 回答 3

31

打开提琴手 -> 菜单规则 -> 自定义规则(或点击Ctrl+ R

CustomRule.js文件打开。向下滚动直到找到该行

static function OnBeforeResponse(oSession: Session)

这是您的代码所在的位置。在这里,您可以在浏览器看到它之前更改服务器响应。

下面的代码示例展示了如何包含一段自定义的 jQuery 代码,它将水平菜单中的Unanswered链接替换为一个链接,该链接用作Unanswered jQuery Questions的快捷方式

我首先向您展示我想要包含的 jQuery 代码

<script type='text/javascript'>
    $(function() {
        var newLink = '<a href="/unanswered/tagged/jquery">Unanswered jQuery</a>';
        $('div#hmenus div.nav:first ul li:last a').replaceWith(newLink);
    });
</script>

现在是提琴手代码(基于 CustomRules.js 中的代码和FiddlerScript CookBook中的代码示例)

//is it a html-response and is it from stackoverflow.com
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html") &&
    oSession.HostnameIs("stackoverflow.com")) {

    // Remove any compression or chunking
    oSession.utilDecodeResponse();

    var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);

    // Match the jQuery script tag
    var oRegEx = /(<script[^>]*jquery.min.js"><\/script>)/gi;
    // replace the script tag withitself (no change) + append custom script tag
    oBody = oBody.replace(oRegEx, "$1<script type='text/javascript'>$(function() {$('div#hmenus div.nav:first ul li:last a').replaceWith('<a href=\"/unanswered/tagged/jquery\">Unanswered jQuery</a>');})</script>");

    // Set the response body to the changed body string
    oSession.utilSetResponseBody(oBody); 
}

我认为您现在应该能够自己编写一段适合您问题的代码。

例子

// Match the head end
var oRegEx = /(<\/head>)/gi;
// replace with new script
oBody = oBody.replace(oRegEx, "<script type='text/javascript' src='http://url/myscript.js'></script>$1");
于 2009-12-20T11:29:35.427 回答
0

如果您使用 jQuery,您可以即时添加 js。我可能认为您可以有一种方法,该方法可以根据某些查询参数包含/排除您的脚本。这就是您将 JS 包含在 jQuery 中的方式

$.getScript('someScript.js',function(){
//Do something here after your script loads
});
于 2009-12-19T19:42:19.690 回答
0

还没有尝试过,但是GreaseMonkey for IE怎么样?

于 2009-12-19T20:23:51.717 回答