获取chrome-extension

时间:2017-11-17 15:13:56

标签: javascript google-chrome

我找到了几种方法,但它们看起来已经过时,或者因为某些原因而无法正常工作。也许tunnelvision:

首先要做的事情:

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

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

我有两个简单的脚本,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[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。

修改 可能很重要的是,我想在我的扩展程序中点击按钮后检索网址。

感谢您的反馈和帮助。

1 个答案:

答案 0 :(得分:0)

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

  

获取此脚本调用的选项卡。也许   如果从非选项卡上下文调用(例如:背景),则为undefined   页面或弹出视图)。

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