2011-08-21 54 views
1

这是情况.... 我有一个iframe,它位于我的客户端,并且iframe内容位于我的服务器中。 所以,当用户做一些事情时,我的iframe就会出现,他们可以键入一些东西,并发布到我的服务器。但问题是...... iframe本身不能消失。 我想要做的唯一事情就是提交并隐藏iframe。我可以在客户端执行一个按钮来隐藏我的iframe,但iframe无法控制客户端的js。客户端也无法控制我的iframe上的按钮。 所以,我想在客户端做一个按钮,并提交按钮的某种命令....但问题是我该怎么做?谢谢。如何调用iframe来执行某些操作?

回答

3

iFrame和父文档可以通过JavaScript通信:

  • 的IFRAME可用于这样的文件:window.frames["iframe_name"]。这是iframe的window对象,从这里开始,您可以对js进行任何操作。
  • 父文档的窗口可通过window.opener访问iframe。再次,这是母文档的window

也许this question也可以帮助你。

+0

umum,还是不明白,让说我有一个按钮呼叫“测试”的iframe里面,我怎么能叫的在iframe之外的“测试”按钮点击()动作。 – DNB5brims

+0

@Ted'window.frames [“iframe_name”]。document.getElementById('iframe_button')。click()' –

+0

我明白了,但是为什么要使用方形的backet呢? – DNB5brims

0

甚至更​​强的鲁棒性:

function getIframeWindow(iframe_object) { 
    var doc; 

    if (iframe_object.contentWindow) { 
    return iframe_object.contentWindow; 
    } 

    if (iframe_object.window) { 
    return iframe_object.window; 
    } 

    if (!doc && iframe_object.contentDocument) { 
    doc = iframe_object.contentDocument; 
    } 

    if (!doc && iframe_object.document) { 
    doc = iframe_object.document; 
    } 

    if (doc && doc.defaultView) { 
    return doc.defaultView; 
    } 

    if (doc && doc.parentWindow) { 
    return doc.parentWindow; 
    } 

    return undefined; 
} 

... 
var el = document.getElementById('iframe_id'); 
// or 
var el = window.frames["iframe_name"]; 
// or 
var el = window.frames[0]; 

getIframeWindow(el).targetFunction(); 
... 
相关问题