开发者问题收集

如何使用 javascript 获取 Chrome 扩展程序中当前选项卡的 URL

2013-08-26
73562

我刚刚开始开发 Google Chrome 扩展程序,我的项目涉及制作一个扩展程序,单击该扩展程序时会打印当前打开的页面/选项卡的 URL。

因此,如果我在 Google 主页上单击我的扩展程序,我需要在扩展程序中获取“ https://www.google.com/ ”作为我的输出。

我需要使用 javascript 执行此操作,但找不到我理解并能完成这项工作的代码。我读过关于使用“window.location”和“document.href”等内容,但这不会只给我我的扩展程序的 URL 而不是当前选项卡的 URL 吗?

请帮助我开始。提前致谢。

3个回答

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

"permissions": [
    "tabs"
],

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);
});
Musa
2013-08-26

使用 javascript,如果您未在弹出窗口中使用它,它将起作用,因为弹出窗口中的 javascript 将返回弹出窗口的 url,因此,在弹出窗口中,您必须使用 Chrome 标签 API 并在 Chrome 清单中设置权限。

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

所以最好的方法是使用 Chrome 标签 API

saadsaf
2013-08-26

您需要谨慎理解“当前标签”的含义。如果用户打开了多个窗口,每个窗口都有多个标签,则 Chrome 会将“当前窗口”定义为运行使用 chrome.tabs API 的内容脚本的窗口 。这发生在我身上,我通过引用 最后聚焦的窗口 而不是“当前”窗口来解决这个问题:

chrome.tabs.query({ active: true, lastFocusedWindow: true }, function (tabs) {
    // Do something
});

参考:

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

希望有帮助!

Clint Eastwood
2015-03-19