我正在为Microsoft开发一个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函数的第一行上放置断点时,它永远不会命中。我只能假设:
update调用不会触发onBeforeSendHeaders。更新
我发现我丢失了manifest.json文件中的manifest.json--以下是更新的permissions部分:
"permissions": [
"tabs",
"activeTab",
"webRequest",
"webRequestBlocking",
"*://*.someurl.com/*"
]..。但是,在MudVille中没有joy,我对光照的追求还在继续。事件处理程序中的断点从未命中。我们非常感谢一如既往的任何援助。
发布于 2017-12-01 22:02:08
对browser.tabs.update()的调用是一个异步调用;它不会停止并等待该调用在转到removeListener()方法之前完成。
在浏览器触发消息时,我已经分离了事件。
https://stackoverflow.com/questions/47584581
复制相似问题