連結到一個新視窗,我需要在這個新視窗執行完相應操作後關閉新視窗,重新整理最初的介面
可以設定一個定時器解決上面問題。
var newWin;var timer;function subWinClose() { if (newWin.closed == true) { alert('重新整理'); window.clearInterval(timer); } }function open_win() { newWin = window.open('http://www.111.com'); timer = window.setInterval("subWinClose()", 500);}
當開啟多個新介面後,關閉其中一個新介面,最初介面會一直的重新整理。導致上面的原因是因為全域變數的問題,timer會被新的介面覆蓋掉,所以需要改寫一下代碼。
function open_win() { var newWin = window.open('http://www.111.com'); var timer = window.setInterval(function(){ if (newWin.closed == true) { alert('重新整理'); window.clearInterval(timer); }}, 500);}
知識點補充: setTimeout和setInterval的區別:
setTimeout和setInterval的文法相同。它們都有兩個參數,一個是將要執行的代碼字串,還有一個是以毫秒為單位的時間間隔,當過了那個時間段之後就將執行那段代碼。
不過這兩個函數還是有區別的,setInterval在執行完一次代碼之後,經過了那個固定的時間間隔,它還會自動重複執行代碼,而setTimeout只執行一次那段代碼。
function closeWin(){alert('重新整理');setTimeout('closeWin()',1000);}