2010年11月2日 星期二

希望opener幫我們做一些事情

opener是指JavaScript的「window.opener」。
opener在我的理解是開啟子視窗的父視窗,會用到opener通常是我們在子視窗希望父視窗幫我們做一些事情,例如開啟子視窗進行編輯,希望關閉子視窗時同時能夠更新父視窗;或是開啟子視窗條列資料,按下子視窗的編輯後會關閉子視窗,父視窗會跳到資料編輯頁面。上述兩個功能很直覺就會想到用「window.opener.location.href」,但是在IE會有問題。
Object window.opener.location.href is malfunctioning in IE8
window.opener.location.href do not work with Win7 and IE8
我的解決方法是子視窗關閉前呼叫以下函數。

window.opener.execScript("__doPostBack('" + eventTarget + "', '" + eventArgument + "')", "JavaScript");

這個函數會呼叫父視窗執行__doPostBack(),此時在父視窗我們可以在Page_Load(),依據參數將頁面導到其他頁面。