JavaScript / Jquery:如何从父窗口访问iframe中存在的表单

时间:2014-09-19 06:55:29

标签: javascript jquery forms

我有这种情况,我有一个父窗口(窗体名称:pform),单击父窗口上的按钮,我向用户显示一个Iframe。 Iframe最初是Parent窗口的一部分,但有一个设施可以取消Iframe。 Iframe有一个单独的表格。 By Undocked我的意思是将整个iframe与表单(表单名称:cform)一起复制到一个新窗口中。

如何从“父窗口”中评估Iframe中的隐藏变量(id =“r111.o1”和“r111.o2”)。

<form method="post" action="xxx" name="pform" id="pform">
    <div>
    <div class="iframe">
    <iframe>
    <form name="cform" id="cform" >
    <input type="hidden" value="1" name="r111.o1" id="r111.o1">
    <input type="hidden" value="1" name="r111.o2" id="r111.o2">
    ...
</form>

在iframe取消停靠后,

<form method="post" action="xxx" name="pform" id="pform">
    <div>
    <div class="iframe">
</form>


<html><div><iframe>
    <form name="cform" id="cform" >
    <input type="hidden" value="1" name="r111.o1" id="r111.o1">
    <input type="hidden" value="1" name="r111.o2" id="r111.o2">
    ....

我怎样才能访问隐藏变量?这可能吗???

更新: 我编写了这个JS代码,我能够识别停靠或取消停靠的窗口/ iframe。

XT.Assess = {};
XT.Assess.windows = new Array(); // creating array to keep track of the child window ( undocked) 
XT.Assess.iframes = new Array(); // creating array to keep track of the iframe ( docked) 
function validateRub(id) {
    var rubWindow = XT.Assess.windows[id];
    if( rubWindow ){ // undocked
    console.log( 'rubWindow = '+rubWindow );
    var rubcont = rubWindow.contentDocument || rubWindow.contentWindow.document; 
    console.log( 'rubcont = '+rubcont ); 
    var rubIframe = XT.Assess.iframes[id]; // not working
    console.log( 'rubrIframe = '+rubrIframe );
}
else { //docked
    var rubIframe = XT.Assess.iframes[id];
    console.log( 'rubIframe = '+rubIframe );
    var ifr = document.getElementById('Iframe0');
    console.log( 'ifr= '+ ifr);
    var ifrDoc = ifr.contentDocument || ifr.contentWindow.document;
    console.log( 'ifrDoc= '+ifrDoc );
    var theForm = ifrDoc.getElementById('cform');  // Iframe
    console.log( 'theForm= '+theForm );
}
return false;
}

我现在需要的是一个代码来迭代对象rubIframerubWindow中的HTML元素。我是走在正确的道路上吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用iframe contentwindow元素

来使用iframe内容
var iframe = document.getElementById("yourFrameId");
var iframeContent = (iframe.contentWindow || iframe.contentDocument);

然后你可以调用该文件的任何功能,如

iframeContent.myfunction();