2010-07-30 88 views
1

我有一個很長的加載時間(如2分鐘)的ASP.NET(C#)頁面。用戶會看到一個小動畫和一個「請稍候」的消息。如果用戶意外加載此頁面,則需要等待加載。如何在請求發送後停止加載頁面?

我的問題是:有沒有辦法停止頁面加載?

謝謝

+0

目前數據加載如何? Ajax還是僅僅通過主頁面請求?你想要取消什麼?只需停止負載或做一個重定向或使屏幕做一些不同的事情? – Chris 2010-07-30 15:28:57

+0

我不使用AJAX。 我想要做的是發出停止加載命令到服務器,使其停止渲染頁面,因爲大頁面渲染似乎減慢了其他使用系統的人。 – Olivier 2010-07-30 15:30:04

回答

4

如果你想停止服務器端處理,那麼它是一個棘手的操作。一般情況下,一旦發出請求,該頁面將獨立呈現其他行星正在進行的獨立行爲。您可能需要做的是重新設計該頁面,以定期檢查停止命令是否已發出,並中止當前正在執行的任何操作。停止標誌可以放入會話中,應在停止後清除。

您可能還需要考慮如何正確識別正確的停車位(如果有多個車輛正在運行)。這可以通過返回可用於部分調用「abort」頁面的唯一ID來完成。

雖然我的做法並非如此簡單,但還是要努力阻止用戶發生這種事故。可能做任何他們點擊的鏈接彈出一個警告說:「下面的頁面將需要幾分鐘渲染,你是否希望繼續」,然後希望你有效地中止頁面請求之前,它甚至作出。

我應該注意,我從來沒有嘗試過這樣做過,所以可能有更簡單的方法來做到這一點,但這是我可能會認爲abotu解決問題的方式。

+0

你的想法看起來不錯。我會試一試 – Olivier 2010-07-30 15:43:17

0

在JavaScript中嘗試window.stop()

+0

我試過了,它不會停止渲染頁面 – Olivier 2010-07-30 15:34:42

+0

你在IE嗎?試試這個:'document.execCommand('Stop')'。不是很漂亮,但如果這樣做,你可能需要在不同的瀏覽器中支持這兩個命令。 – 2010-07-30 15:39:50

+2

如果你看看我對這個問題的評論的回覆,這不是完全需要的。 Galael提供了一種停止服務器處理的方法,這是一種純粹的JS解決方案,我不會認爲它會發生。 – Chris 2010-07-30 15:41:24