如何使用javascript获取chrome扩展程序中当前Tab的URL

Dar*_*der 26 javascript url google-chrome-extension

我刚刚开始使用谷歌Chrome扩展程序开发,我的项目涉及制作一个扩展程序,点击该链接时会打印当前打开的页面/选项卡的URL.

因此,如果我在谷歌的主页上并点击我的扩展程序,我需要在扩展程序中输入" https://www.google.com/ "作为我的输出.

我需要使用javascript来执行此操作,并且无法找到我理解的代码以及执行此操作的代码.我读到了关于使用"window.location"和"document.href"的东西,但是这不会给我只是我的扩展名而不是当前标签的网址吗?

请帮我开始吧 提前致谢.

Mus*_*usa 52

尝试

chrome.tabs.getCurrent(function(tab){
        console.log(tab.url);
    }
);
Run Code Online (Sandbox Code Playgroud)

请注意,您必须tabs在清单文件中设置权限

"permissions": [
    "tabs"
],
Run Code Online (Sandbox Code Playgroud)

http://developer.chrome.com/extensions/tabs.html

或者activeTab通过点击扩展按钮发起的权限[ Xan ]

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


如果以上不起作用试试

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
    console.log(tabs[0].url);
});
Run Code Online (Sandbox Code Playgroud)

  • **注意:**这不再需要`tabs`权限.如果通过单击扩展按钮启动,则"activeTab"权限就足够了. (5认同)
  • 嗯,我尝试了代码,但它不起作用。这是我在控制台上收到的错误: Uncaught TypeError: Cannot read property 'url' of undefined (3认同)

saa*_*saf 29

使用javascript,如果您没有在弹出窗口中使用它,它将起作用,因为弹出窗口中的javascript将返回弹出窗口的url因此,在弹出窗口中,您必须使用Chrome选项卡API并在Chrome清单中设置权限.

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
    console.log(tabs[0].url);
});
Run Code Online (Sandbox Code Playgroud)

因此,最好的方法是使用Chrome标签API

  • 这是最相关的答案,应作为最佳答案进行更新. (4认同)

Cli*_*ood 6

您需要注意"当前标签"的含义.如果用户打开了多个窗口,每个窗口都有多个选项卡,Chrome会将"当前窗口"定义为运行使用chrome.tabsAPI 的内容脚本的窗口.这发生在我身上,我通过引用不是"当前"窗口而不是最后一个窗口来解决它:

chrome.tabs.query({ active: true, lastFocusedWindow: true }, function (tabs) {
    // Do something
});
Run Code Online (Sandbox Code Playgroud)

参考文献:

https://developer.chrome.com/extensions/windows#current-window https://developer.chrome.com/extensions/tabs#method-query

希望能帮助到你!