2012-08-24 93 views
1

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

我试图在我的content.js但无济于事使用

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

获得输入框的值。

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

打印控制台中的iframe对象,但无法获取iframe文档内容。这是获取/修改由Chrome扩展插入的iframe内容的正确方法吗?或者我在这里丢失了铬的东西* APIs

任何关于如何解决这个问题的指针会更有帮助。

TIA, Jagadeesh

+0

为什么要使用iframe?基于给定的信息,这似乎使您的解决方案复杂化。 –

+0

你会建议我做什么?关于此的一些指针 – Jagadeesh

+0

您试图在iframe中提取什么内容?也许你可以用另一种方式获取数据。处理iframe是一件痛苦的事情。 –

回答

0

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

0

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

+0

我不认为这应该是铬扩展的问题,因为我已经在manifest.json文件中获得了跨源许可权。更多在这里http://developer.chrome.com/extensions/xhr.html – Jagadeesh