【问题标题】:Is it possible to detect being inside of a chrome app?是否可以检测到 Chrome 应用程序内部?
【发布时间】:2014-07-23 14:04:30
【问题描述】:

我编写了一个 chrome 扩展,它应该可以嵌入到大多数页面中;但是,chrome 应用程序(例如 slack、google hangouts 等)仍然在页面上嵌入了我的扩展程序。

是否有可能通过 javascript 检测到我在 chrome 应用程序中运行(或者基本上是 chrome 默认不显示网站 url 的任何地方),因此我无法嵌入我的脚本?

【问题讨论】:

  • 您的主机权限是什么? "<all_urls>"?您是在谈论常规应用页面,而不仅仅是 <webview> 嵌入?
  • 目前我正在使用 因为我想将它嵌入到每个普通网页上。我不确定其中的区别,需要查找以回答嵌入的 webview。
  • 如果 http/https 耗尽了您对普通网页的定义,您可以尝试使用"*://*/*" 权限。虽然这个问题很有趣。您是否尝试过从内容脚本中查看应用窗口的 URL?
  • 不幸的是,像 slack 和 hangouts 这样的东西实际上有 url——它们的 url 是像 company.slack.com 或 hangouts.google.com/id 这样的东西
  • 您是否考虑过在清单文件中添加exclude_matches 属性?您将需要明确列出您想要避免的所有 chrome 应用程序 URL,但它应该可以工作。

标签: javascript google-chrome google-chrome-extension google-chrome-app


【解决方案1】:

您只需要检查 chrome.runtime.id 的存在(并且不为空):

if (window.chrome && chrome.runtime && chrome.runtime.id) {
    // Here you know that the code is running in a Chrome extension
}

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 2013-04-24
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2019-02-18
    相关资源
    最近更新 更多