【问题标题】:Can I access the content of an iframe in JavaScript that is part of a Google Chrome extension?我可以访问属于 Google Chrome 扩展程序一部分的 JavaScript 中 iframe 的内容吗?
【发布时间】:2011-11-12 00:23:19
【问题描述】:

我在主窗口中有一个名为“test_iframe”的 iframe。我想在Google Chrome 扩展中访问“test_iframe”的内容。我知道,如果我拥有manifest.json 中提供的必要权限,我可以这样做。

我可以从背景 HTML 页面访问此 iframe 的内容吗?或者我可以在作为该扩展一部分的内容脚本中访问它吗? (在后一种情况下,我想我必须将 iframe 内容从内容脚本传递到后台页面,作为消息的一部分以进行进一步处理(?))

【问题讨论】:

  • 这只是供您个人使用吗?如果是这样,您可以通过运行带有 --disable-web-security 标志的 chrome 来禁用同源策略。否则,您必须使用扩展 API 在窗口之间来回发送消息;这有点痛苦。

标签: google-chrome-extension


【解决方案1】:

假设这个test_iframe 来自http://frame.example.com。我只需将内容脚本直接注入frame.example.com(而不是父页面)并在那里执行所有操作。

【讨论】:

  • @serg- 我正在尝试一次向 10 个不同的 3rd 方站点提交数据 - 10 个提交中的每一个的响应都将在 diff 中打开。 iframes-现在我想获取所有 10 个 iframe 的数据并通过 xmlhttprequest 将其发送到我的应用程序。我想将一个脚本注入主窗口(其中包含 10 个 iframe),并且该脚本应该获取所有 10 个 iframe 的内容——我可以这样做吗?你有什么其他的建议?谢谢...
  • @user893664 我很确定如果它们位于不同的域中,您将无法从父页面访问 iframe 内容。
  • @serg- 我认为如果 manifest.json 中的权限可用,那么您可以访问任何内容??只有内容脚本或后台页面才能访问此内容?
  • @user893664 清单权限据我所知仅影响 ajax 请求。
  • @serg- 这是 chrome 扩展的开发人员指南中给出的主题“权限=匹配模式”- 指定主机权限。如果扩展想要与页面上运行的代码交互,则需要。许多扩展功能,例如跨域 XMLHttpRequests、以编程方式注入的内容脚本和 cookie API 都需要主机权限。有关语法的详细信息,请参阅匹配模式。 --- 注意这里也提到了“以编程方式注入的内容脚本”,所以我觉得这意味着脚本可以访问 iframe 的内容,但我可能错了。
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 2011-04-07
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
相关资源
最近更新 更多