iframe頁面呼叫父視窗,左右視窗函式的方法
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()