2010-07-28 72 views
0

我有一個應用程序跨越申請人的幾個頁面的參與,我不希望用戶過早放棄。處理申請放棄

沒有劫持的前進和後退按鈕(我想大多數這個論壇會同意的是一種不好的做法),我有一組事件處理器利用onbeforeunload的一些能夠處理的典型使用情況下,該系統可以考慮卸載的文檔等於用戶放棄應用程序,即頁面刷新(F5,Ctrl/Meta + R)。但是,我不知道如何允許在應用程序的上下文中移動,例如,第1頁>提交>第2> opps,後退按鈕>第1.或者在物理上對URL 進行物理修復可能會發生,但應用程序仍在「範圍內」。

使用後退按鈕返回到頁面會發生什麼情況。 1(或轉發回第2頁)onbeforeunload火災(預計爲),因此它看起來像申請人可能將放棄該應用程序。

我正在尋找的東西,並且正在逃避我,是檢查目的地文檔/域的權力。我更喜歡,因此使用戶體驗不會太難看,只有當下一頁不在我的應用程序域中時纔會激發「請勿離開」對話框。

對此提出建議?

+1

我希望出於安全原因,瀏覽器沒有提供任何方法從「beforeunload」處理程序中獲取目標URL。 – Pointy 2010-07-28 18:31:04

+0

@積分,經驗告訴我你是正確的。事件檢查驗證了這一點。 – javafueled 2010-07-28 18:42:36

+0

你使用ASP.NET或其他平臺...如果另一個,哪個? – code4life 2010-07-28 19:02:53

回答

0

而不是使用單獨的頁面,你會在同一頁面上使用多個div嗎?如果您使用的是ASP.NET,則還可以使用用戶控件在代碼隱藏方面實現更好的代碼隔離。我仍然保持div作爲用戶控件中最頂級的標籤。

每個div都對應於您目前封裝在網頁中的內容。根據用戶按下後退或前進按鈕,您可以在相應的div上啓用可見性。

HTH ...

+0

這會工作,不幸的是它是一個遺留給它MVC的遺留應用程序。我已經在許多「小冊子網站」中使用了這種模型,其中導航位於TabView(YUI)中,後退和前進按鈕在導航堆棧上的行爲更高。 我已經開始關注我們的競爭力,並且我正在構建一種這種放棄應用程序難以陷阱的案例 - 我們的競爭似乎在過去曾嘗試過,但試圖確定它的代碼是全部註釋掉了。 – javafueled 2010-07-28 19:13:55