我正在制作一个Chrome扩展程序,如果当前标签不是同一个网站,则打开一个网站,所以我设法得到所有这些标签:
chrome.tabs.getAllInWindow(null, allTabs);
我写了一个显示它的函数:
function allTabs(tabs) {
var tabsURLS = '';
for (var i = 0; i < tabs.length; i++) {
tabsURLS = tabs[i].url + '\n';
}
alert(tabsURLS);
}
但是我需要获取当前页面的网址,以便我得到当前的标签:
var object=chrome.tabs.getCurrent(function(){;});
但我无法访问id
或url
等网页属性,此警报显示“未定义”...
alert(object);
虽然此警报根本不起作用
alert(object.id);
最后,我读了这页chrome.tabs,当我读到这一行时我很震惊
getCurrent
chrome.tabs.getCurrent(函数回调)
获取此脚本调用的选项卡。如果从非选项卡上下文调用(例如:后台页面或弹出视图),则可能未定义。
所以我认为没有解决方案从Chrome扩展程序获取当前打开的选项卡...
答案 0 :(得分:5)
我相信您需要使用getSelected而不是
<html>
<head>
<script>
chrome.tabs.getSelected(null, function(tab) {
var tabId = tab.id;
var tabUrl = tab.url;
alert(tabUrl);
});
</script>
</head>
答案 1 :(得分:1)
最终的代码是这样的,它工作得很好......:
var tabUrl;
chrome.browserAction.onClicked.addListener(function(activeTab) {
var x=activeTab.url;
var newURL = "https://www.google.com";
if (x!= newURL) {
//to open a page in a new tab
chrome.tabs.create({url: newURL,"selected":true});
//to open the page with the current tab
chrome.tabs.update(activeTab.id, {url:newURL});
}
});
答案 2 :(得分:0)
答案 3 :(得分:-1)
确保在manifest.json中设置正确的权限以访问选项卡信息:
"permissions": [
"tabs",
"http://*/*"
],
之后,您可以使用
确定网址chrome.tabs.getSelected(null, function (tab) {
alert(tab.url);
});