※open、opener
使用open、opener,主流的瀏覽器都有支援
※dad.html
function openWindow(){ window.open('son.html','_blank','height=400,width=400'); } ---------- <form name="dadForm"> <table> <tr> <td> <input type="button" value="開新視窗" onclick="openWindow()"> <input name="ooo" value="999" /> <input name="rtn" disabled="disabled" /> </td> </tr> </table> </form>
※W3C文件有寫open有四個參數,第三個參數有很多,我只寫兩個,可以參考看看
※son.html
function closeWindow(){ alert(document.sonForm.xxx.value); alert(window.opener.document.dadForm.ooo.value); // 將xxx的value給父視窗的rtn window.opener.document.dadForm.rtn.value = document.sonForm.xxx.value; window.close(); } ---------- <form name="sonForm"> <table> <tr> <td><input name="xxx" value="20" /></td> </tr> <tr> <td> <input type="button" value="確認" onclick="closeWindow()"> </td> </tr> </table> </form>
※使用window.opener開頭可以呼叫父視窗的資料
※通常還有兩個事件比較常用
onunload:按右上角的X鈕會觸發
onbeforeunload:離開頁面就會觸發
注意呼叫window.close()會關閉視窗,關閉前會呼叫onbeforeunload方法,但onunload沒有呼叫到
按右上角的X兩個都會呼叫到
window.onunload = function(){ // ... } window.onbeforeunload = function(){ // ... }
※內容還是可以用window.opener開頭呼叫爸爸的一些有的沒的
※其他事件可參考mozilla官網的WindowEventHandlers教學
※showModalDialog
IE有支援參考資源
※和open、opener的差別主要有兩個
1.使用showModalDialog不能按右鍵2.使用showModalDialog會將父視窗凍結起來
※dad.html
function modalDialog(){ var rtn = window.showModalDialog('son.html', document.dadForm.ooo.value,'dialogHeight=400,dialogWidth=400'); alert('return=' + rtn); } ---------- <form name="dadForm"> <table> <tr> <td> <input type="button" value="開新視窗" onclick="modalDialog()"> <input name="ooo" value="999" /> <input name="rtn" disabled="disabled" /> </td> </tr> </table> </form>
※第一個參數是必填,其他都是選填
※變數可以接收子視窗的回傳值
※第二個參數可以傳陣列,這樣就可以傳多個值了
※son.html
window.onload = function(){ alert(window.dialogArguments); } function closeWindow(){ alert(document.sonForm.xxx.value); // 將xxx的value給父視窗的rtn window.returnValue = document.sonForm.xxx.value; window.close(); } ---------- <form name="sonForm"> <table> <tr> <td><input name="xxx" value="20" /></td> </tr> <tr> <td> <input type="button" value="確認" onclick="closeWindow()"> </td> </tr> </table> </form>
※window.dialogArguments可以接受父視窗的參數
※window.returnValue可以將值回傳給父視窗
※類似像showModalDialog的,我提供的超連結還有兩個showModelessDialog、show,這我沒研究,因為主流瀏覽器不是全部支援,應該是大同小異吧!
沒有留言:
張貼留言