do browser.tabs.update()触发browser.webrequest.onbeforesendhea



我正在为Microsoft Edge开发Web扩展名;我的浏览器正在使用Edgehtml 14.14393。

我正在尝试在以下代码中更改User-Agent字符串:

function useDifferentUserAgent() {
  var obsh = browser.webRequest.onBeforeSendHeaders;
  // attach my listener with filter and extraInfoSpec
  obsh.addListener(
    rewriteUserAgentHeader, 
    { tabId: tab.id, urls: ["*://*.someurl.com/*"] }, 
    ['requestHeaders', 'blocking']
  );
  // now that the listener is attached, this should trigger the event, right?
  browser.tabs.update(tab.id, { url: 'http://someurl.com/foo/bar' });
    if (obsh.hasListener(rewriteUserAgentHeader)) {
        obsh.removeListener(rewriteUserAgentHeader);
    }
}
function rewriteUserAgentHeader(details) {
    var headers = details.requestHeaders;
    var blockingResponse = {};
    for (var i = 0, l = headers.length; i < l; ++i) {
        if (headers[i].name.toLowerCase() == 'user-agent') {
            headers[i].value = "some other user agent string";
            break;
        }
    }
    blockingResponse.requestHeaders = headers;
    return blockingResponse;
};

browser.tabs.update()调用按预期打开新的URL,但是当我在rewriteUserAgentHeader函数的第一行中放置断点时,它永远不会击中。我只能假设:

  1. 我做错了(很可能)或
  2. update调用不会触发onBeforeSendHeaders

更新

我发现我缺少manifest.json文件中的host permission-这是我更新的permissions部分:

"permissions": [
  "tabs",
  "activeTab",
  "webRequest",
  "webRequestBlocking",
  "*://*.someurl.com/*"
]

...但是,穆德维尔没有欢乐。我对照明的追求仍在继续。在此事件处理程序中,我的断点从未击中。与往常一样,任何帮助都非常感谢。

browser.tabs.update()的呼叫是异步调用;它不会停止并等待该呼叫在转到removeListener()方法之前完成。

tl; dr-到浏览器触发我已经脱离事件的消息时。

相关内容

  • 没有找到相关文章

最新更新