Google chrome 从chrome扩展读取iframe内容

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

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

我试图通过使用

$('#iframe_id').contents().find('input#input_id').val('YYYY')
(or)
window.frames['iframe_id'].document.getElementId('input_id').value
在my content.js中,但没有帮助

console.log($('#iframe_id'))
在控制台中打印iframe对象,但无法获取iframe文档内容。这是获取/修改由chrome扩展插件插入的iframe内容的正确方法吗?还是我在chrome.*API中遗漏了什么

任何关于如何解决这个问题的建议都会更有帮助

蒂亚,
Jagadeesh

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

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

为什么要使用iframe?基于给定的信息,这似乎使您的解决方案复杂化。您建议我怎么做?关于这方面的一些提示您试图在iframe中提取的内容是什么?也许你可以用另一种方式获取数据。处理iFrame总是一件痛苦的事情。我有一些输入字段。我需要读取值并在用户单击我的扩展的上下文菜单时进行修改。是。你需要做更多的工作才能让样式按照你想要的方式工作,但我相信从长远来看这是更好的方法。我认为这不应该是chrome扩展的问题,因为我已经在manifest.json文件中获得了跨源权限。更多