【问题标题】:How to use external ajax response in Chrome Plugin如何在 Chrome 插件中使用外部 ajax 响应
【发布时间】:2015-05-19 10:05:56
【问题描述】:

我的网站中有一个现有的文件 ajax,js,它发出 ajax 请求并创建一个全局 JSON 对象,searchResult 使用该响应。现在我正在创建一个 Chrome 插件,其中需要这个 JSON 对象。我有一个插件即内容脚本。 plugin.js 我想在 plugin.js 文件中包含该对象。

当我尝试从 plugin.js 中记录 window.searchResult 时,它显示为未定义。

但是当我使用浏览器控制台时,它会按预期显示值。

请帮帮我。

【问题讨论】:

    标签: javascript jquery ajax google-chrome-extension


    【解决方案1】:

    问题

    Chrome 内容脚本和页面自己的脚本位于isolated worlds

    内容脚本在称为孤立世界的特殊环境中执行。他们可以访问被注入页面的 DOM,但不能访问页面创建的任何 JavaScript 变量或函数

    您的代码在控制台中运行,因为您默认在页面上下文中执行它。要查看扩展程序看到的内容,您需要switch it

    解决方案 1a

    首先,通用解决方案(即使您不控制网页也可以)

    有一种方法可以解决这个问题,将一些代码直接注入页面的“世界”(或正确称为上下文)。

    injecting the code 之后,您的页面级脚本需要与内容脚本通信以传递数据。它是possible with custom DOM events(你记得,DOM 是共享的)。页面级脚本发送一个事件,其中包含事件详细信息中的数据。

    或者,您可以将数据附加到某个 DOM 节点,例如不可见的<div>

    解决方案 1b

    既然你说这是你的页面,你可以跳过注入页面的步骤,并在页面自己的代码中准备好监听器。

    内容脚本发送一个自定义事件来请求数据,页面应答将数据传回,如 1a 中所述。

    解决方案 2

    理论上,您甚至不需要内容脚本。

    您可以使用"externally_connectable" mechanism直接与页面对话。

    请注意,页面必须发起对话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多