2014-03-13 53 views
0

我正在處理將大量用戶會話數據存儲在數據庫中的遺留應用程序,並且當用戶註銷或離開站點時編碼清除所有會話數據。它通過使用onunload事件來調用JavaScript函數。這個函數使用的window.location.href設置的各種ASPX文件將清除出的數據爲特定應用程序的路徑multilple語句......是這樣的:似乎無法更改window.location.href或window.location

window.location.href = "/SubDir/SessionReset.aspx"; 
window.location.href = "/AnotherSubDir/SessionReset.aspx"; 
window.location.href = "/ThirdSubDir/ClearData.aspx"; 

我有一個問題,和一個問題。 問題:該語句似乎無法更改window.location.href中的值。如果我這樣做:

console.log("First: " + window.location.href); 
window.location.href = "/Subdir/SessionReset.aspx"; 
console.log("Second: " + window.location.href); 

href的值在第一個控制檯日誌和第二個控制檯日誌之間沒有變化。該頁面沒有「重定向到」SessionReset.aspx頁面,因此代碼從不運行。

問題:多重聲明將window.location.href設置爲不同的值,甚至可以繼續工作嗎?看起來好像,如果第一個「window.location.href =」語句能夠工作,瀏覽器就會進入該頁面,那就是了。它如何返回,以便下一個「window.location.href =」語句可以運行,並將瀏覽器發送到下一頁。這似乎不可能。我錯了嗎?

感謝您提供的任何清晰度。

+3

它的頁面是不可能的去多個地方... – epascarello

+0

我認爲你需要做一個XMLHttpRequest並在服務器上調用一些functin來爲你做所有的清理工作。這可以在window.onunload事件上完成。否則,您可以在當前窗口關閉之前打開新窗口,然後該頁面可以執行清理作業並關閉自身。 – Nilesh

+0

onunload在Chrome和Opera中不起作用http://www.w3schools.com/jsref/event_onunload.asp –

回答

1

沒有辦法多個位置更改將工作。

你可以做類似

iframe1.location.href = "/SubDir/SessionReset.aspx"; 
iframe2.location.href = "/AnotherSubDir/SessionReset.aspx"; 
window.location.href = "/ThirdSubDir/ClearData.aspx"; 

,並有2個iframe,也可能與一些超時其間但最好的方法是調用清除所有數據的一個服務器進程

+0

是的。我認爲在服務器端做所有這些絕對是答案。感謝您的建議! – rogdawg