访问jQuery对话框中的iframe内部的元素

问题描述:

我需要在用户已经打开的页面内“加载页面”,而不是将它们重定向到新页面。我的理解是,iframe是做这件事的最好方法。我喜欢jQuery的dialog box作为这个iframe内容的包装,因为它看起来不错,并允许用户重新定位弹出以及轻松关闭它。访问jQuery对话框中的iframe内部的元素

但是,在访问此iframe上的元素时遇到问题。我希望能够从用户的原始窗口获取数据并将其添加到新的iframe的输入元素,但我似乎无法找到执行此操作的语法。

代码中有一些iframe页面覆盖了jQuery使用的$,所以我不能使用$('#foo').text('bar')。我一直试图找到在纯JavaScript正确的语法 - 像

var a = window.frames["e_frame"].document.getElementById ("title"); 
a.text = 'foobar'; 

其中e_frame是我给我的iframe的id和title是元素的ID加载在iframe。我可以在开发者控制台中清楚地看到这些,但是我无法访问它们,我不知道我在做什么错误。在控制台上面的命令输入给我这个错误:

VM364:1 Uncaught TypeError: Cannot read property 'document' of undefined 
    at <anonymous>:1:28 

并键入window.frames到控制台来调试自己给了我太多的线条,因为我不知道我要找的经历。

任何想法?

+0

并且是来自同一个域的iframe中的页面,使用与父页面相同的协议和端口。 – adeneo

+0

iframe来自不同的子域(a.mydomain.com vs b.mydomain.com) - 我通过Apache ProxyPass加载它 - 在通过代理进行加载之前我得到了CORS错误,但由于我把它通过代理我现在可以加载页面并使用鼠标和键盘与其进行交互,但不能直接通过代码访问它。 –

+0

我对同一个子域中的不同页面尝试了相同的方法,并且我可以通过javascript访问该页面的元素。我想这是一个CORS问题。穿过它! –

你试过吗?

var iframe = document.getElementById("e_frame"); 
var iframe_contents = iframe.contentDocument.getElementById('title'); 
+0

''undefined' for var iframe = document.getElementById(“e_frame”);' –

+0

我犯了一个错误。对话框> iframe>元素是否正确? –

+0

是的,这是正确的 –