iframe裡面的頁面呼叫父視窗,左右視窗js函式的方法

鴨脖發表於2013-12-19

iframe裡面的頁面呼叫父視窗,左右視窗js函式的方法 
實現iframe內部頁面直接呼叫該iframe所屬父視窗自定義函式的方法。 
比如有A視窗,A內有個IFRAME B,B裡面的裝載的是C頁面,這時C要直接呼叫A裡面的一個自定義函式AFUN();
那麼只要在C頁面中寫如下JS函式就可以了:
window.parent.AFUN();
如果AFUN()有引數也可以直接傳遞合適的引數進去。 
例如:
修改父視窗控制元件屬性
window.parent.document.getElementById('frmright').src=window.parent.document.getElementById('frmrightsrc').value;
呼叫父視窗函式
window.parent.POPUP('bigFram');

父視窗呼叫iframe子視窗方法 
<iframe name="myFrame" src="child.html"></iframe> 
myFrame.window.functionName(); 
iframe子視窗呼叫父視窗方法 
parent.functionName();


////////////////////////////////////
用js互相呼叫iframe頁面內的js函式 
一個html頁面,分成左右兩塊,左邊為導航欄,右邊為需要顯示的內容,程式碼如下:
左欄的程式碼為:
<IFRAME frameBorder=0 id=frmTitleLeft name=framLeft src="left.html" style="HEIGHT: 100%; width:180px;">
連線到left.html 
比如右欄中有一個函式right(),我要在左欄的連結中呼叫right()函式,該如何實現呢 
1,首先leftframe是內嵌在容器頁index.html中的,因此需要先返回到index這一級別,並取得rightframe物件
    var frames=window.parent.window.document.getElementById("frameid"); 
2,要能執行其頁面中的函式,必須要獲得window物件,這裡有一個重要的物件contentWindow,獲得這個物件,即可執行其中的函式了,如
    frames.contentWindow.right(); 
以上程式碼相容IE6,Firefox3,chrome2.0,均成功通過測試,IE7沒試過,不過應該沒問題。 
3.例如: 
window.parent.document.getElementById('leftFrame').contentWindow.JSMenu('MenuUl'+Sid);
window.parent.frames["leftFrame"].JSMenu('MenuUl'+Sid);

////////////////////////////////////////
還有下面一種,沒測試過

並不是象通常那樣iframeName.test();——test()為iframe裡的方法。因為要寫一個通用一點的東西,所以是從一個配置檔案中動態獲取到iframe的id。然後呼叫裡面的方法。可是不成功。相煩幫忙看一看。程式碼如下:   
<iframe   id="iframe1"></iframe>   
    
var   cs   =   document.all;   
            for(var   i   =   0;   i   <   cs.length;   i++)   {   
                    if(cs.tagName.toUpperCase()   ==   "IFRAME")   {   
                            if(cs.id   ==   "iframe1")   {   
                                    alert(frmDealData);   
                                    alert(cs);   
                                    document.frames.iframe1.setScreenletStatus(iframeLayoutLvl);   
                                    document.frames.cs.setScreenletStatus(iframeLayoutLvl);   
                            }   
                    }   
            }   
第一句呼叫是成功的。   
可第二句就不成功。   
如果在只能取得cs物件的情況下,該怎麼呼叫iframe裡的方法?謝謝

------------------------------------ 
不要用id,用name   
window.frames[cs].fun()

相關文章