父窗口調用子窗口函數實現是挺簡單的,如下:
var wnd = window.open("XXX.html");
var wnd = window.open("XXX.html");
wnd.showDatas(datas);
以上代碼中,showDatas是定義在子窗口的函數,datas是父窗口要給子窗口的數據。
需要注意的事,使用open語句打開窗口后,窗口未必能把所有代碼全部載入,因此showDatas函數未必調用有效。
如果要有效,可以先把數據傳遞給子窗口,再在子窗口中延時調用showDatas函數。
如此,父窗口中的代碼如下:
子窗口中的代碼如下:
setTimeout(showDatas(window.datas),1000);// 延時時間可進行調整。
如上,父窗口調用子窗口函數才算完美。
反過來,子窗口要調用父窗口的函數要用opener對象,如:
opener.showMessages(msgs);
以上代碼中,showMessages是定義在父窗口的函數,msgs是子窗口要給父窗口的數據。
2012年5月9日增補:
父窗口未必需要傳數據給子窗口,而是子窗口需要操作父窗口的某些區域如div時,可以在父窗口打開子窗口的函數前將這個div的id找個地方(隱藏區域)存起來,當然這個地方不需要顯示,當子窗口需要操作這個div時,直接調用父窗口的js函數即可,這個函數可以先從隱藏區域中得到div的id,再根據這個id操作div。
以上代碼中,showDatas是定義在子窗口的函數,datas是父窗口要給子窗口的數據。
需要注意的事,使用open語句打開窗口后,窗口未必能把所有代碼全部載入,因此showDatas函數未必調用有效。
如果要有效,可以先把數據傳遞給子窗口,再在子窗口中延時調用showDatas函數。
如此,父窗口中的代碼如下:
var wnd = window.open("XXX.html");
wnd.datas=datas;// 傳遞數據給子窗口子窗口中的代碼如下:
setTimeout(showDatas(window.datas),1000);// 延時時間可進行調整。
如上,父窗口調用子窗口函數才算完美。
反過來,子窗口要調用父窗口的函數要用opener對象,如:
opener.showMessages(msgs);
以上代碼中,showMessages是定義在父窗口的函數,msgs是子窗口要給父窗口的數據。
2012年5月9日增補:
父窗口未必需要傳數據給子窗口,而是子窗口需要操作父窗口的某些區域如div時,可以在父窗口打開子窗口的函數前將這個div的id找個地方(隱藏區域)存起來,當然這個地方不需要顯示,當子窗口需要操作這個div時,直接調用父窗口的js函數即可,這個函數可以先從隱藏區域中得到div的id,再根據這個id操作div。