1

我正在尝试在 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,贾加迪什

4

2 回答 2

0

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

于 2012-08-25T23:55:15.690 回答
0

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

于 2013-01-21T18:23:20.163 回答