我正在为 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
,它永远不会命中。我只能假设:
- 我做错了(很可能)或
update
通话不会onBeforeSendHeaders
触发。
更新
我发现host permission
我的manifest.json
文件中丢失了 - 这是我更新的permissions
部分:
"permissions": [
"tabs",
"activeTab",
"webRequest",
"webRequestBlocking",
"*://*.someurl.com/*"
]
...但是,在 MudVille 中仍然没有乐趣;我对照明的追求仍在继续。我在事件处理程序中的断点从未命中。一如既往,非常感谢任何帮助。