Google chrome extension Chrome扩展获取当前选项卡的URL,并基于重写URL打开新选项卡
实际上,我想将其用于更复杂的URL重写,但为了简单起见,现在我想完成一些更基本的工作。因此,如果我打开并单击我的扩展的按钮,我希望它打开一个新的选项卡 我发现了关于获取URL和打开新选项卡的不同问题,但我还没有找到任何关于两者结合的问题 这就是我现在拥有的: manifest.json:Google chrome extension Chrome扩展获取当前选项卡的URL,并基于重写URL打开新选项卡,google-chrome-extension,Google Chrome Extension,实际上,我想将其用于更复杂的URL重写,但为了简单起见,现在我想完成一些更基本的工作。因此,如果我打开并单击我的扩展的按钮,我希望它打开一个新的选项卡 我发现了关于获取URL和打开新选项卡的不同问题,但我还没有找到任何关于两者结合的问题 这就是我现在拥有的: manifest.json: { "manifest_version": 2, "name": "Rewrite", "version": "0.1", "browser_action": { "default_
{
"manifest_version": 2,
"name": "Rewrite",
"version": "0.1",
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": ["https://*/*", "http://*/*", "tabs"]
}
background.js:
var currentURL;
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
currentURL = tabs[0];
});
chrome.browserAction.onClicked.addListener(function(activeTab) {
var newURL = currentURL + "/images";
chrome.tabs.create({ url: newURL });
});
var currentURL;
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
currentURL = tabs[0].url;
});
chrome.browserAction.onClicked.addListener(function(activeTab) {
var newURL = currentURL + "/images";
chrome.tabs.create({ url: newURL });
});
我尝试过各种形式的方法,比如将chrome.browserAction.onClicked.addListener块嵌套在chrome.tabs.query块中,反之亦然,但似乎都不起作用
对于当前版本,选项卡将打开,但URL为chrome-extension://bffolfmjagnpglbmjkgajodjlfpekaeo/[object%20Object]/出现“找不到网页”错误的图像。事实上,我想我找到了答案。如果我在background.js中的选项卡[0]后添加“.url”,似乎可以正常工作:
var currentURL;
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
currentURL = tabs[0];
});
chrome.browserAction.onClicked.addListener(function(activeTab) {
var newURL = currentURL + "/images";
chrome.tabs.create({ url: newURL });
});
var currentURL;
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
currentURL = tabs[0].url;
});
chrome.browserAction.onClicked.addListener(function(activeTab) {
var newURL = currentURL + "/images";
chrome.tabs.create({ url: newURL });
});
虽然这看起来更干净:
chrome.browserAction.onClicked.addListener(function(activeTab) {
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
var newURL = tabs[0].url + "/images";
chrome.tabs.create({ url: newURL });
});
});
这不是“看起来更干净”,这是唯一正确的方法。否则,currentURL
将永远不会更新。只有“更干净的外观”选项有效:)