【问题标题】:read iframe content from chrome extension从 chrome 扩展读取 iframe 内容
【发布时间】:2012-08-20 08:00:48
【问题描述】:

我正在尝试在 iframe 中加载 iframe.html,并将该 iframe 从我的 chrome 扩展程序附加到当前页面的 DOM 中。我已经这样做了,我能够处理点击事件,获取框架元素值(输入,选择框)。到这里为止一切都很好。现在的问题是,一旦将 iframe.html 中的内容插入 DOM,我就无法修改它(更具体地说,我在 iframe.html [附加到 DOM] 中有一个输入框,其值为“XXXX”,现在我想在用户单击我的扩展程序的上下文菜单时将其更改为“YYYY”)。

我尝试通过使用获取输入框值

$('#iframe_id').contents().find('input#input_id').val('YYYY')
(or)
window.frames['iframe_id'].document.getElementId('input_id').value

在我的 content.js 中,但没有帮助。

console.log($('#iframe_id'))

在控制台中打印 iframe 对象但无法获取 iframe 文档内容。这是获取/修改由 chrome 扩展插入的 iframe 内容的正确方法吗?还是我在 chrome.* API 中遗漏了一些东西

任何有关如何解决此问题的指示都会更有帮助。

TIA, 贾加迪什

【问题讨论】:

  • 为什么要使用 iframe?根据给定的信息,这似乎使您的解决方案复杂化。
  • 你会建议我做什么?关于这个的一些指示
  • 您试图在 iframe 中提取的内容是什么?也许您可以通过另一种方式获取数据。处理 iframe 总是很痛苦。
  • 我有一些输入字段。当用户单击我的扩展程序的上下文菜单时,我需要读取这些值并对其进行修改。
  • 是的。你需要做更多的工作才能让样式按照你的意愿工作,但我相信从长远来看这是更好的方法。

标签: google-chrome google-chrome-extension


【解决方案1】:

我相信您遇到了问题,因为 iframe 和顶级页面的域和协议不匹配。这是一个页面安全限制。如果这确实描述了您的问题,您可以使用 iframe postMessage API 解决此限制。

【讨论】:

【解决方案2】:

正如 Mike Grace 所提到的,我插入了 html 而不是 iframe,并构建了 css,以便它可以在任何网页中工作。从长远来看,这将是一种更好的方法。

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 2012-07-04
    • 2011-09-28
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多