2011-08-21 55 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(); 
... 
相關問題