close

  有句電影台詞是女生對風流倜儻的男主角說:晚上很喜歡睡的旁邊是你,但又怕早上醒來時旁邊還是你。說著是男主角是浪漫卻不能依賴。程式語言有Strong Type和Weak Type之分,Strong Type語言顯然像赤木剛憲般的顧家好男人,Weak Type語言則如同剛說的風流倜儻男主角。Java Script是個古老的Weak Type語言,有相當多的Syntax Sugar,但也常難以捉摸,令人氣結。

  需求上是Popup一個視窗,輸入完後按鈕或[X]返回父視窗,而父視窗在Popup視窗未close之前不得被點選。所以找到了window.showModalDialog這個method,卻屢屢無效,最後才知道原來是Google Chrome不支援,支援的有IE和FireFox及Safari,而Chrome和Opera是不支援的。OK!那如何從Popup視窗傳值回父視窗呢?單值還好,多個值…還不如由父視窗提供一個callback的Java Script function給Popup視窗在window.close()前呼叫,只是很狐疑的是,為何以下兩個敍述是等價的:

window.opener.callback

window.dialogArguments.callback

  而按網路的建議寫法,應該是這樣:

if (window.dialogArguments != null) {
    window.dialogArguments.callback(data);
}
window.opener = null;
window.close();

  估計是預防父視窗當掉,連在Popup視窗也受影響吧!特別像Chrome可以不小心手動close父視窗。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Jemmy 的頭像
    Jemmy

    Jemmy Walker

    Jemmy 發表在 痞客邦 留言(0) 人氣()