有句電影台詞是女生對風流倜儻的男主角說:晚上很喜歡睡的旁邊是你,但又怕早上醒來時旁邊還是你。說著是男主角是浪漫卻不能依賴。程式語言有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) { |
估計是預防父視窗當掉,連在Popup視窗也受影響吧!特別像Chrome可以不小心手動close父視窗。