我想更改 chrome 中当前选项卡的 url 并重新加载页面。 我尝试了这段代码但不起作用,这里的任何帮助将不胜感激。
背景.js:
function updateUrl(){
chrome.tabs.getCurrent(function (tab) {
var tabUrl = encodeURIComponent(tab.url);
var myNewUrl = tabUrl + "some text";
chrome.tabs.update(tab.id, {url: myNewUrl});
})
}
chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete') {
updateUrl();
}
})
manifest.json:
{
"name": "test",
"version": "0.1",
"manifest_version": 2,
"permissions": [
"tabs",
"webNavigation",
"http://www.example.com/*"
],
"background": { "scripts": ["background.js"] },
"content_scripts":
[
{
"matches": ["http://www.example.com/*"],
"js": ["background.js", "jquery.js"]
}
]
}
最佳答案
从您的 list 来看,您似乎正在尝试将background.js 作为内容脚本和后台脚本包含在内。 chrome.tabs
在内容脚本中不可用,因此这不起作用。
根据您的具体用例,如果您想附加特定 URL,您可以使用 chrome.webRequest
API 来实现这一点。
背景.js:
chrome.webRequest.onBeforeRequest.addListener(function (details) {
return {
redirectUrl: details.url + "some text"
}
}, {
urls: ["http://www.example.com/*"]
}, ["blocking"]);
manifest.js:
{
"name": "test",
"version": "0.1",
"manifest_version": 2,
"permissions": [
"webRequest",
"webRequestBlocking",
"http://www.example.com/*"
],
"background": {
"scripts": [
"background.js"
]
}
}
这将在浏览器对“http://www.example.com/ *”发出的每个请求的末尾添加“一些文本”
如果您确实想使用内容脚本来执行此操作,那么您需要查看 message passing 。这将允许您从内容脚本调用后台脚本(可以使用chrome.tabs
)。消息发送后,后台页面就可以更新选项卡。
关于javascript - Chrome 扩展 : page loaded event and update url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38592919/