我有谷歌Chrome扩展的乐趣,我只是想知道我如何在变量中存储当前选项卡的URL ?
当前回答
像这样使用chrome.tabs.query():
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
这需要你请求访问chrome。标签API在你的扩展清单:
"permissions": [ ...
"tabs"
]
重要的是要注意,“当前选项卡”的定义可能会根据扩展的需要而有所不同。
在查询中设置lastFocusedWindow: true是合适的,当你想要访问用户聚焦窗口中的当前选项卡(通常是最上面的窗口)。
设置currentWindow: true允许你在你的扩展代码正在执行的窗口中获得当前选项卡。例如,如果您的扩展创建了一个新的窗口/弹出窗口(改变焦点),但仍然想从运行扩展的窗口访问选项卡信息,这可能是有用的。
在本例中,我选择使用lastFocusedWindow: true,因为谷歌调用了currentWindow可能不总是存在的情况。
您可以使用这里定义的任何属性进一步优化选项卡查询:chrome.tabs.query
其他回答
你得检查一下。
HTML
<button id="saveActionId"> Save </button>
manifest.json
"permissions": [
"activeTab",
"tabs"
]
JavaScript 下面的代码将活动窗口的所有url保存为JSON对象,作为按钮单击的一部分。
var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
myArray = [];
chrome.tabs.query({"currentWindow": true}, //{"windowId": targetWindow.id, "index": tabPosition});
function (array_of_Tabs) { //Tab tab
arrayLength = array_of_Tabs.length;
//alert(arrayLength);
for (var i = 0; i < arrayLength; i++) {
myArray.push(array_of_Tabs[i].url);
}
obj = JSON.parse(JSON.stringify(myArray));
});
}, false);
对于那些使用上下文菜单api的人来说,文档并没有立即明确如何获取选项卡信息。
chrome.contextMenus.onClicked.addListener(function(info, tab) {
console.log(info);
return console.log(tab);
});
https://developer.chrome.com/extensions/contextMenus
async function getCurrentTabUrl () {
const tabs = await chrome.tabs.query({ active: true })
return tabs[0].url
}
您需要在清单中添加“permissions”:["tabs"]。
像这样使用chrome.tabs.query():
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
这需要你请求访问chrome。标签API在你的扩展清单:
"permissions": [ ...
"tabs"
]
重要的是要注意,“当前选项卡”的定义可能会根据扩展的需要而有所不同。
在查询中设置lastFocusedWindow: true是合适的,当你想要访问用户聚焦窗口中的当前选项卡(通常是最上面的窗口)。
设置currentWindow: true允许你在你的扩展代码正在执行的窗口中获得当前选项卡。例如,如果您的扩展创建了一个新的窗口/弹出窗口(改变焦点),但仍然想从运行扩展的窗口访问选项卡信息,这可能是有用的。
在本例中,我选择使用lastFocusedWindow: true,因为谷歌调用了currentWindow可能不总是存在的情况。
您可以使用这里定义的任何属性进一步优化选项卡查询:chrome.tabs.query
如果你想要存储通过chrome扩展打开或看到的使用的url的完整扩展:
在后台使用这个选项:
openOptionsPage = function (hash) {
chrome.tabs.query({ url: options_url }, function (tabs) {
if (tabs.length > 0) {
chrome.tabs.update(
tabs[0].id,
{ active: true, highlighted: true, currentWindow: true },
function (current_tab) {
chrome.windows.update(current_tab.windowId, { focused: true });
}
);
} else {
window.addEventListener(hash, function () {
//url hash # has changed
console.log(" //url hash # has changed 3");
});
chrome.tabs.create({
url: hash !== undefined ? options_url + "#" + hash : options_url,
});
}
});
};
你还需要index.html文件。你可以在Github上找到 清单文件应该是这样的:
{
"manifest_version": 2,
"name": "ind count the Open Tabs in browser ",
"version": "0.3.2",
"description": "Show open tabs",
"homepage_url": "https://github.com/sylouuu/chrome-open-tabs",
"browser_action": {},
"content_security_policy": "script-src 'self' https://ajax.googleapis.com https://www.google-analytics.com; object-src 'self'",
"options_page": "options.html",
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"background": {
"scripts": ["background.js"]
},
"web_accessible_resources": ["img/*.png"],
"permissions": ["tabs", "storage"]
}
完整版的简单应用程序可以在这个Github上找到:
https://github.com/Farbod29/extract-and-find-the-new-tab-from-the-browser-with-chrome-extention
推荐文章
- Chrome:网站使用HSTS。网络错误……这个页面稍后可能会工作
- 什么是“升级-不安全-请求”HTTP报头?
- 如何验证一个XPath表达式在Chrome开发工具或Firefox的Firebug?
- 如何删除所有断点在谷歌Chrome一步?
- 编辑和重放XHR chrome/firefox等?
- SameSite警告Chrome 77
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError:
- Access-Control-Allow-Origin不允许Origin < Origin >
- 如何设置断点在内联Javascript在谷歌Chrome?
- Chrome调试-打破下一个点击事件
- 谷歌Chrome表单自动填充和它的黄色背景
- 如何处理“未捕获(在承诺)DOMException:播放()失败,因为用户没有首先与文档交互。”在桌面与Chrome 66?
- 强制DOM重绘/刷新Chrome/Mac