2014-01-05 168 views
4

Safari擴展有沒有像Chromium的chrome.webRequest?我通過他們的文檔here。我能找到的最接近的是SafariBeforeNavigateEvent。這將阻止新的頁面加載,但仍然會將請求發送到服務器。此外,我不認爲它會在AJAX請求上調用監聽器。任何人試過類似的東西?如何攔截網絡請求

回答

3

我們通過使用「xmlhttprequest」重寫來解決了這個問題。

這是我們的content.js。我們注入content.js作爲啓動腳本

$(document).ready(function() { 

    var myScriptTag = document.createElement('script'); 
    myScriptTag.src = safari.extension.baseURI + 'js/injectedToPage.js'; 
    document.body.appendChild(myScriptTag);  

    });  

注入的代碼是:(injectedToPage.js)

XMLHttpRequest.prototype.reallySend = XMLHttpRequest.prototype.send; 
XMLHttpRequest.prototype.send = function (body) { 

     console.log("--req.body:---"); 
     console.log(body); 

    this.reallySend(body); 

}; 
var req = new XMLHttpRequest(); 
req.open("GET", "any.html", true); 
req.send(null);