Javascript 是否在Chrome扩展内容脚本中使用现有jQuery?

Javascript 是否在Chrome扩展内容脚本中使用现有jQuery?,javascript,jquery,google-chrome,google-chrome-extension,sendmessage,Javascript,Jquery,Google Chrome,Google Chrome Extension,Sendmessage,我发现的一切似乎都涉及注入jQuery,但我知道页面上已经存在jQuery(浏览器JS控制台允许我使用它) 我有一个后台脚本,它正在向我的内容脚本发送消息,该脚本正在运行该函数。当该函数执行时,我得到: runtime.onMessage:ReferenceError:jQuery的事件处理程序中出错 没有定义 (我已经尝试了$和jQuery引用) 你知道为什么我不能从内容脚本访问现有的jquery对象吗?这是因为设计的内容脚本不允许访问页面定义的变量/函数 但是,内容脚本有一些限制。他们不能

我发现的一切似乎都涉及注入jQuery,但我知道页面上已经存在jQuery(浏览器JS控制台允许我使用它)

我有一个后台脚本,它正在向我的内容脚本发送消息,该脚本正在运行该函数。当该函数执行时,我得到:

runtime.onMessage:ReferenceError:jQuery的事件处理程序中出错 没有定义

(我已经尝试了$和jQuery引用)


你知道为什么我不能从内容脚本访问现有的jquery对象吗?

这是因为设计的内容脚本不允许访问页面定义的变量/函数

但是,内容脚本有一些限制。他们不能:

  • 使用chrome.*API,但以下情况除外:
    • 扩展名(getURL、inIncognitoContext、lastError、onRequest、sendRequest)
    • i18n
    • 运行时(connect、getManifest、getURL、id、onConnect、onMessage、sendMessage)
    • 储藏
  • 使用由其扩展页定义的变量或函数
  • 使用由网页或其他内容脚本定义的变量或函数

因此,如果您希望使用某个库,您的扩展必须将其注入

如果您将代码注入网页,您的代码需要等待jquery init,那么它应该可以工作。但是,如果您试图在扩展代码中的某个页面上使用jquery,它将不起作用,因为chrome不会与您的扩展共享网页脚本。@ZigMandel的可能副本与副本不一致。@xan为什么?这个案子在dup上有报道。这是一个常见的jquery dup。@ZigMandel问题是关于“为什么不能使用page的版本”,而不是“如何在内容脚本中使用jquery”。为什么,不是如何。嗯,谢谢,这很有帮助。我在清单中的content_脚本中添加了一个本地jquery,现在我可以在documentready上向dom添加一个div,但是当我从扩展弹出窗口中单击一个按钮,该按钮发送一条消息以在同一内容脚本中执行一个函数时,它仍然抱怨jquery和$don不存在。这是否与最后几点有关?即使它是一个内容脚本,因为它来自后台JS的消息。。。“它缺少上下文?”凯特琳从你的解释中很难说;在这一点上,一个新的问题可能更好。