gpt4 book ai didi

google-chrome-extension - chrome 扩展中的 js 代码可以检测到它是作为内容脚本执行的吗?

转载 作者:行者123 更新时间:2023-12-03 19:39:44 31 4
gpt4 key购买 nike

我有一个 google chrome 扩展,它在它的内容脚本和后台进程/弹出窗口之间共享一些代码。如果此代码有一种简单直接的方法来检查它是否作为内容脚本执行? (消息传递行为不同)。

我可以在 list 中包含额外的“标记”javascript,或者调用一些内容脚本中不可用的 chrome 函数并检查异常 - 但这些方法看起来很尴尬。也许这是进行此检查的一些简单而干净的方法?

最佳答案

检查您的脚本是否作为 content script 运行, 检查它是否没有在 chrome-extension 上执行方案。

if (location.protocol == 'chrome-extension:') {
// Running in the extension's process
// Background-specific code (actually, it could also be a popup/options page)
} else {
// Content script code
}

如果您想进一步了解您是否在后台页面中运行,请使用 chrome.extension.getBackgroundPage() === window .如果为真,则代码在后台运行。如果没有,您将在弹出/选项页面的上下文中运行/...

(如果您想检测代码是否在扩展的上下文中运行,即不在常规网页的上下文中,请检查 chrome.extension 是否存在。)

修改答案的解释

以前,我的回答建议检查是否有特定于后台的 API,例如 chrome.tabs 被定义。从 Chrome 27/Opera 15 开始,这种方法带来了不需要的副作用:即使您不使用该方法,以下错误也会记录到控制台(每个 API 的每个页面加载最多一次):

chrome.tabs is not available: You do not have permission to access this API. Ensure that the required permission or manifest property is included in your manifest.json.



这不会影响您的代码( !!chrome.tabs 仍将是 false ),但用户(开发人员)可能会生气,并卸载您的扩展程序。

关于google-chrome-extension - chrome 扩展中的 js 代码可以检测到它是作为内容脚本执行的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16267668/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com