检测固定在 Javascript 中的 Chrome 扩展

Vol*_*ike 5 javascript google-chrome-extension

最新的 Chrome 浏览器现在会显示一个拼图图标,并且不会自动固定您的 Chrome 扩展程序。是否有 API 来检测 Chrome 扩展程序是否已被固定?我们可以从网页的 Javascript 中检测,还是必须通过扩展本身来做 API?(我已经假设扩展本身。)

ace*_*973 8

您可以使用以下一些代码来检查您的扩展程序是否已固定,如果没有,则将用户发送到特定的 URL。

你可以把它放在你的Background.js中:

async function checkIsPinned(){
  let userSettings = await chrome.action.getUserSettings();
  if(userSettings.isOnToolbar == false){
    chrome.tabs.create({ url: 'https://example.com'});
  }
}
//Check if extension is pinned 
checkIsPinned();
Run Code Online (Sandbox Code Playgroud)

此代码改编自https://github.com/rustyzone/is-ext-pinned

警告

  • 它需要清单 V3。
  • 它仅在从弹出脚本(例如,当用户单击工具栏上的扩展图标时运行的脚本)或从 Service Worker 调用时才有效。
  • 它不适用于内容脚本。也就是说,{ isOnToolbar: false }无论您的扩展程序的图标是否固定,它都会返回。您需要向 Service Worker 发送请求,运行代码,然后将响应发送回内容脚本。您可以通过chrome.runtime.sendMessage或类似的chrome.runtime.*方法来做到这一点。
  • 截至 2023 年 1 月 2 日,Safari 不支持(查看详情)。