2010-10-25 85 views
0
var where_to = confirm("You have locked this record. You can only leave by clicking cancel."); 

if (where_to== true) { 
alert(window.location); 
window.location.href = window.location; 
} else { 
window.location.href = window.location; 
} 

此功能適用於IE 7和firefox以及Opera 10.6。除非用戶單擊調用令牌功能的鏈接或按鈕,否則不會允許加載其他頁面。Window.location工作但不是無處不在

除非調用標記函數,否則window.location.href被替換爲當前url。

謝謝你的時間。

+0

「IE 7和Firefox和Opera 10.6」...什麼時候它不起作用? – AGoodDisplayName 2010-10-25 20:39:11

+0

它不適用於Chrome或Safari。 – 2010-10-25 20:41:43

+0

Chrome或Safari中的「它不起作用」是什麼意思? – 2010-10-26 03:57:14

回答

2

你的語法搞砸了。還有太多的陳述。

這是這裏的問題:

} else { 
    //alert(tokenset); 
    alert('You have passed the token test'); 

} 

編輯

根據您的意見,這聽起來像這是你正在嘗試做的:你想成爲能夠阻止用戶從離開頁面,除非他們通過點擊取消來完成。

在這種情況下,您應該使用onbeforeunload事件。這裏是IE page,這裏是關於該事件的Mozilla page

這個想法是,只要用戶試圖離開頁面(即使只是關閉瀏覽器或在地址欄中輸入其他地址),該函數也會被調用。

該功能有限。你只能返回一個字符串。瀏覽器使用它來提示用戶如果他們點擊取消,他們會留在頁面上。他們可以點擊確定並繼續離開頁面。雖然你只能返回一個字符串,你不必這樣做。您可以檢查條件,並且只有在條件通過時才返回一個字符串。看看我的這個例子:

window.onbeforeunload = function() { 
    if (MyTokenIsNotSet) { 
     return 'You have not released the lock'; 
    } 
}; 

如果你的令牌被設置,那麼用戶將什麼都看不到,他們會離開頁面。否則,這將提示用戶確定他們真的想離開該頁面。

的幾個注意事項:

  • 提示看起來在不同的瀏覽器不同(的措辭是不同的)。我會嘗試一下,以確保您的字符串看起來確定與提示的其餘部分。
  • 這並不妨礙用戶離開。這隻會提醒用戶他們應該做一些不同的事情。無法可靠地防止用戶表單離開頁面。
  • 除此之外,您應該處理用戶會話結束的事件(在服務器上)並在此時釋放鎖。
+0

我猜想這是更大塊代碼的一部分 - 他說它可以在IE 7,Firefox和Opera中運行。如果出現語法錯誤,它根本不起作用。 – 2010-10-25 20:38:40

+0

是的,我清理了一些。該腳本執行,沒有錯誤,我可以警告的window.location更換。由於某些原因,Chrome和safari似乎可以看到新的window.location.href,但它們不適用。 – 2010-10-25 20:43:55

+0

我試了window.location.href = window.location.href;它在IE7,Firefox,但不是鉻或Safari瀏覽器。我真的不在乎野生動物園這麼多。 – 2010-10-25 21:02:00

0

你有兩個else語句和一個額外}

if (where_to== true) 
{ 

    alert(window.location); 

    window.location.href = window.location; 

} else { 

    alert('You have passed the token test'); 

} 

請填寫我們與您的代碼,你似乎缺少一些呢?

編輯到您的編輯:嘗試刪除該提醒。有時警報可能會導致問題,所以它可能會阻止您設置window.location.href