Chrome扩展程序API webRequest在响应方面效果不佳

时间:2012-08-14 04:08:59

标签: javascript google-chrome-extension

所以我正在尝试使用Chrome API webRequest。一切都按要求正常,但在回应时,我遇到了问题。

我的测试非常简单:

function func(obj)
{
    var resHeaders=obj.responseHeaders;
    for(var i=0;i<resHeaders.length;i++)
    {
        if(resHeaders[i].name=="X-Powered-By" && resHeaders[i].value.indexOf("PHP")>=0)
        {
            resHeaders[i].value="Extension";
            resHeaders.push({name:"X-Test",value:"Found"});
            chrome.pageAction.show(obj.tabId);
            break;
        }
    }
    return {responseHeaders:resHeaders};
}

chrome.webRequest.onHeadersReceived.addListener(func,{urls:["<all_urls>"]},["blocking","responseHeaders"]);

  

令我惊讶的是,Chrome Developer Tool始终显示原始标题   即使标题被正确修改(我必须使用   XMLHttpRequest.getAllResponseHeaders()告诉我。这是非常的   不方便,因为我必须调试许多XHR而不是   尝试现实世界的网页。

编辑:由@RobW确认,这是一个错误,因此它属于crbug.com ...


更大的问题是,如果未在加载事件之前的最后一个请求上进行修改,则不会显示pageAction图标。

E.g。 如果页面包含四个请求:

  

HTML - &gt;触发修改

     

CSS

     

JS

     

[加载事件]

     

HTML iframe内的HTML - &gt;触发修改

pageAction图标停留;

但如果一个页面包含三个请求:

  

HTML - &gt;触发修改

     

CSS

     

JS

     

[加载事件]

pageAction图标会显示并消失(我可以在慢速的XP机器上看到它;在快速机器上它只是没有显示)。

但如果我手工制作XHR(触发修改),则pageAction图标会正确地保留在地址栏上。

这个问题很烦人,因为我必须让用户(如果有的话)知道扩展名有效。


同样的事情发生在Win 7和XP,最新的Chrome(21 +,稳定)。这是预期的,还是我做错了什么?

0 个答案:

没有答案