我有一個簡單的firefox插件(addon-sdk),它監聽http resposes並在響應的內容類型與一組內容類型匹配時阻止。現在,當我對收聽圖像,javascript文件和ajax(XHR)響應不感興趣時,觀察者會收聽所有的響應。我能以某種方式過濾或至少發現該響應屬於XHR請求,這樣我就不會浪費資源來處理響應。在firefox插件中監聽http響應時確定XHR(ajax)響應
類似的東西可以在Chrome瀏覽器擴展來實現,其中「details.type」可以main_frame,圖像,XHR等
httpResponseObserver =
{
observe: function(subject, topic, data)
{
if (topic == "http-on-examine-response")
{
var channel = subject.QueryInterface(Ci.nsIHttpChannel);
var contentType;
try {
contentType = channel.getResponseHeader('Content-Type');
if (/\b(?:xml|rss|javascript|vnd|json|html|text|image|ocsp|x-shockwave-flash)\b/.test(contentType))
{
return;
}
}
catch(error) {
return;
}
}
}
棒極了!我們可以用圖像做到這一點嗎?我們可以用Ci來區分幀和非幀加載嗎?我們可以做什麼呢?我使用的標誌對我來說是一個令人困惑的解決方案。 – Noitidart
我猜try try是因爲回調可能爲空?這是真的?所以如果null,那麼沒有getInterace? – Noitidart
圖像檢測可以通過MIME類型完成。 'getInterface'需要try catch,如果沒有找到請求的接口,將會拋出。我不確定框架/非框架問題,他們不會返回一個不同的DOM窗口嗎? – paa