[英]chrome extension code to get current active tab url and detect any url update in it as well
[英]get url of current (active) tab for chrome-extension
我发现了几种方法,但由于某些原因,它们似乎已经过时或根本无法使用。 也许tunnelvision:
第一件事:
我在manifest.json
拥有正确的权限,我认为:
"permissions": [
"tabs",
"activeTab"
]
我有2个简单的脚本, background.js
和content.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.