簡體   English   中英

使用 Fiddler 將 JavaScript 注入網站的頭部元素

[英]Injecting JavaScript into head element of website using Fiddler

我正在考慮將 Fiddler 用於以下目的......

我有一個基於 JavaScript 的服務,我想向潛在客戶展示。 為了向他們展示如果他們安裝(即包含)我的腳本,他們的網站會是什么樣子,我想在我的 PC 上設置 Fiddler,這樣在獲取客戶的網站時,

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

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

這可以用 Fiddler 輕松完成嗎? 如果是的話,有人可以指出我在哪里可以找到涵蓋該內容的文檔嗎?

謝謝!

----更新----

目前我已經使用 BHO 將我的腳本添加到頁面。 我在 onDocumentComplete 上使用 execScript() 來運行一段簡單的 JavaScript,它將我需要的 .js 文件附加到頁面上。 但是 EricLaw 的指針和 jitter 的答案似乎是一種更完整(和優雅)的方式來做我需要的東西。

如果有人感興趣,我可以在這里上傳 BHO 代碼。 -謝謝!

打開提琴手 -> 菜單規則 -> 自定義規則(或按 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食譜

//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");

如果您使用 jQuery,則可以即時添加 js。 我可能認為您可以使用一種方法來根據某些查詢參數包含/排除您的腳本。 這就是你將 JS 包含在 jQuery 中的方式

$.getScript('someScript.js',function(){
//Do something here after your script loads
});

還沒有嘗試過,但是對於 IE 的 GreaseMonkey怎么樣?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM