繁体   English   中英

获取chrome扩展名的当前(活动)标签的网址

[英]get url of current (active) tab for chrome-extension

我发现了几种方法,但由于某些原因,它们似乎已经过时或根本无法使用。 也许tunnelvision:

第一件事:

我在manifest.json拥有正确的权限,我认为:

"permissions": [
     "tabs",
    "activeTab"
]

我有2个简单的脚本, background.jscontent.js (可以正确识别,错误不在此处)。

在我的background.js我尝试了几种方法:

chrome.browserAction.onClicked.addListener(buttonClicked);

var sharedUrl;

function buttonClicked(tab) {

chrome.tabs.getCurrent(function(tab) {
   // please read further, this was my last resort, I tried other stuff as well
   sharedUrl = console.log(window.location.href);
});

let msg = {
    txt: "Hello",
    url: sharedUrl
}
chrome.tabs.sendMessage(tab.id, msg);
}

我先用getCurrent()然后用tab.url尝试了tab.url ,但是那tab.url (用tab[0].url都没有用tab[0].url

我也尝试使用getSelected()以及类似的方法:

chrome.tabs.query({active: true, currentWindow: true}, function(arrayOfTabs) {
    var activeTab = arrayOfTabs[0];
});

而我的content.js就是这里:

chrome.runtime.onMessage.addListener(gotMessage);

function gotMessage(message, sender, sendResponse) {
    console.log(message.txt);
    console.log(message.url);
}

它显示“ Hello”,但不显示我要查找的URL。

编辑:可能很重要,我想在扩展名中单击按钮后检索URL。

感谢您的反馈和帮助。

好的,根据文档,当您不在选项卡上下文中时,您将无法获取选项卡对象。 选项卡上下文仅包含内容脚本。 因此,您无法访问标签,因为您是从后端页面调用该标签的。 如果扩展程序已生成选项卡,则只能执行此操作。

获取进行此脚本调用的选项卡。 如果是从非制表符上下文调用的,则可能是未定义的(例如:背景页面或弹出视图)。

因此,唯一可能的方法是更改​​扩展数据流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM