google-chrome - 如何从 Google Chrome 扩展程序获取当前选项卡的 URL?

标签 google-chrome google-chrome-extension browser-tab

我正在使用 Google Chrome 扩展程序,我只是想知道如何将当前选项卡的 URL 存储在变量中?

最佳答案

像这样使用chrome.tabs.query():

chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
    let url = tabs[0].url;
    // use `url` here inside the callback because it's asynchronous!
});

您需要在 extension manifest 中请求 tabsactiveTab 权限:

"permissions": [ ...
   "tabs"
]

"permissions": [ ...
   "activeTab"
]

如果您的代码在用户显式调用扩展程序(单击其图标或其上下文菜单项或按下其 chrome.commands)后使用 chrome.tabs.query,则首选 activeTab热键),因为此权限在安装扩展程序时不会添加任何警告,不像 tabs 添加读取您的浏览历史记录,这可能会吓到一些用户。

请务必注意,“当前选项卡”的定义可能会根据扩展程序的需求而有所不同。

当您想要访问用户聚焦窗口(通常是最上面的窗口)中的当前选项卡时,在查询中设置 lastFocusedWindow: true 是合适的。

设置currentWindow: true 允许您获取当前正在执行扩展程序代码的窗口中的当前选项卡。例如,如果您的扩展程序创建了一个新窗口/弹出窗口(更改焦点),但仍想从运行扩展程序的窗口访问选项卡信息,这可能会很有用。

在此示例中,我选择使用 lastFocusedWindow: true,因为 Google 会指出 currentWindow may not always be present 的情况。 .

您可以使用此处定义的任何属性进一步优化选项卡查询:chrome.tabs.query

关于google-chrome - 如何从 Google Chrome 扩展程序获取当前选项卡的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1979583/

相关文章:

python - 使用带有 Python 的 Selenium Webdriver 在 Headless chrome 浏览器上运行脚本时发生超时错误

javascript - 有没有更简单的方法从 firefox 或 chrome 的开发者控制台查看 json 对象?

html - Google Lighthouse 的 Tap Target Spacing 功能有多可靠?

javascript - 内容菜单和打开选项卡的问题 - Chrome 扩展

javascript - 在项目数据源中记录电话号码和全名

google-chrome-extension - 如何将多个值推送到 chrome.storage.local 数组键?

javascript - 将数据(选项卡)从background.js传递到popup.js

javascript - 如何显示足够智能的 session 超时警告来处理多个打开的浏览器或选项卡

javascript - 存储浏览器选项卡特定数据

javascript - 如果它包含使用 JavaScript 的特定单词,如何关闭浏览器的选项卡?