我与Google Chrome扩展程序一起玩得开心,我只想知道如何将当前标签的URL存储在变量中?

有帮助吗?

解决方案

更新:chrome.tabs.getSelected() 方法现在已弃用。

获得当前选项卡的URL的推荐方法是使用 chrome.tabs.query().

一个示例用法:

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    var url = tabs[0].url;
});

这要求您要求访问 chrome.tabs 您的API 扩展清单:

"permissions": [ ...
   "tabs"
]

重要的是要注意,您的“当前选项卡”的定义可能会根据扩展的需求而有所不同。

环境 lastFocusedWindow: true 当您想访问用户聚焦窗口中的当前选项卡(通常是最上方的窗口)时,在查询中是合适的。

环境 currentWindow: true 允许您在窗口中获取当前的标签,其中扩展代码当前正在执行。例如,如果您的扩展程序创建一个新的窗口 /弹出窗口(更改焦点),但仍然希望从运行扩展名的窗口访问选项卡信息,这可能很有用。

我选择使用 lastFocusedWindow: true 在此示例中,因为Google调用了 currentWindow 可能并不总是在场.

您可以自由使用此处定义的任何属性进一步完善标签查询: chrome.tabs.query

其他提示

一个朋友回答我的问题。

首先,您要设置TAB API的权限:

"permissions": [
    "tabs"
]

并存储URL:

chrome.tabs.getSelected(null,function(tab) {
    var tablink = tab.url;
});

其他答案假设您想从弹出式或背景脚本中了解它。

如果您想知道当前的URL 从内容脚本, ,标准JS方式适用:

window.location.toString()

您可以使用 window.location 访问URL的各个部分,例如主机,协议或路径。

问题是chrome.tabs.getsected是异步的。下面的该代码通常不会按预期工作。将“表链链接”的值写入控制台时仍将不确定,因为Getsectected尚未调用重置该值的回调:

var tablink;
chrome.tabs.getSelected(null,function(tab) {
    tablink = tab.url;
});
console.log(tablink);

解决方案是包装您将在函数中使用该值的代码,并具有由GetSelected调用的代码。通过这种方式,您可以保证始终具有值集,因为您的代码必须在执行之前等待其提供的值。

尝试类似:

chrome.tabs.getSelected(null, function(tab) {
    myFunction(tab.url);
});

function myFunction(tablink) {
  // do stuff here
  console.log(tablink);
}

嗨,这是一个Google Chrome样本,将当前网站通过电子邮件发送给朋友。背后的基本思想是您想要的...首先,它获取页面的内容(不为您互相)...之后它得到了URL(< - 好部分)

此外,这是一个不错的工作代码示例,我更喜欢Mots,而不是阅读文档。

可以在这里找到:通过电子邮件发送此页面

对于那些使用的人 context menu api, ,文档尚不清楚如何获取选项卡信息。

  chrome.contextMenus.onClicked.addListener(function(info, tab) {
    console.log(info);
    return console.log(tab);
  });

https://developer.chrome.com/extensions/contextmenus

你必须检查 这个.

html

<button id="saveActionId"> Save </button>

清单

  "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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top