我强烈建议您阅读内容脚本。它们正是您正在寻找的,但您需要了解它们对 Chrome.* API 的访问权限有限,因此您必须使用消息传递才能使用您当前的功能。但是,通过使用内容脚本,您可能可以使用我提出的解决方案之一来简化此操作。
解决方案 1
假设您希望每次都将重定向发送到相同的 URL,您可以轻松地将扩展配置为仅在 NY Times 站点上运行您的内容脚本。例如;
内容脚本:content.js
location = 'http://example.com';
解决方案 2
但是,如果重定向 URL 可以变化,您可能希望将该逻辑抽象到您的背景页面中。例如;
内容脚本:content.js
// Or you can pass a more specific section of the URL (e.g. `location.pathname`)
chrome.extension.sendRequest({href: location.href}, function(data) {
location = data.url;
});
背景页面:background.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
sendResponse({
url: getUrl(request.href) // TODO: `getUrl` method containing your logic...
});
});
重要的!
无论您采用哪种方法,您还需要请求许可才能在清单文件中的目标站点上运行内容脚本。
显现:manifest.json
{
...
"content_scripts": [
{
"js": ["content.js"],
"matches": ["*://*.nytimes.com/*"],
"run_at": "document_start"
}
],
...
}