首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >browser.tabs.update()是否触发browser.webRequest.onBeforeSendHeaders事件?

browser.tabs.update()是否触发browser.webRequest.onBeforeSendHeaders事件?
EN

Stack Overflow用户
提问于 2017-11-30 23:57:34
回答 1查看 532关注 0票数 0

我正在为Microsoft开发一个web扩展;我的浏览器正在使用EdgeHTML 14.14393。

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

代码语言:javascript
复制
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文件中的manifest.json--以下是更新的permissions部分:

代码语言:javascript
复制
"permissions": [
  "tabs",
  "activeTab",
  "webRequest",
  "webRequestBlocking",
  "*://*.someurl.com/*"
]

..。但是,在MudVille中没有joy,我对光照的追求还在继续。事件处理程序中的断点从未命中。我们非常感谢一如既往的任何援助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-01 22:02:08

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

在浏览器触发消息时,我已经分离了事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47584581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档