2010-12-21 156 views
1

所以,想象一下一段JavaScript作爲第一個腳本沿停止HTML/JavaScript頁面加載中旬初始化

var MySuperObject = new (function() { 
    this.SuperObjectInit(); 
})(); 

線在頁面上現在想象一下,方進入該腳本(或其中一大截的一切)要求SuperObject滿足其負載條件並正確加載。

假設無論什麼原因加載的對象失敗我需要中止加載頁面的其餘部分和特別是腳本。

我知道你們大多數人都會尖叫,爲什麼沒有你的函數在onSuccess和onFailed上發出回調,但問題是這是在一個ASP.Net項目中,包括masterpages,nestedmasterpage,usercontrols等等(每一個有他們自己的依賴和腳本);使得這種方法存在問題。

其他選項(我假設)是使用window.location =「myErrorPage.html」;但我不喜歡爲錯誤消息創建另一個頁面或導致重定向的事實。

我所希望做的是沿着

StopLoadingPage(); 
document.write("Error has occurred"); 

,但不知道這是如何實現的東西線。

+0

什麼是超級對象? – rahul 2010-12-21 04:31:21

+0

無所謂......關鍵在於處理錯誤。 – 2010-12-21 04:33:07

+0

「問題在於,這是在一個ASP.Net項目與masterpages,nestedmasterages,usercontrols等」這不是一個問題。它是客戶端,如果您使用MVC或任何其他技術(如PHP或Java或Coldfusion),則不會有任何不同。 – Phill 2010-12-21 04:33:35

回答

1

你想達到的不是網頁的設計方式,所以據我所知這是不可能的。從邏輯上講,你只能在JavaScript中停止以Javascript開始的所有內容,所以我能想到的唯一解決方法是異步加載依賴腳本。

我知道這不是你正在尋找的解決方案,但是如果沒有其他選擇(並且我認爲不存在),請查看RequireJS,它處理你的JS依賴關係需要回調等):http://requirejs.org/

+0

夠公平了......感謝您的輸入:-) – 2010-12-21 04:49:43

+1

使用window.location =「」;表現如預期並終止頁面其餘部分的加載,但您的回答非常感謝,並且如果我從頭開始此項目,將是我將使用的解決方案。再次感謝:-) – 2010-12-22 06:12:22

+0

@Maxim - 啊!當然,window.location。我已經看到了類似的事情來防止幀破壞,但在我這裏沒有發生。感謝您回來發佈您的解決方案。 – 2010-12-22 06:25:45

0

當您到達客戶端加載腳本的位置時,您的所有服務器端控件都已加載,並且它們至少已被預渲染。如果你的服務器端代碼依賴於客戶端功能,你可能不得不重新考慮你正在做的事情。

+0

對不起我不建議我的服務器端代碼取決於客戶端JavaScript ...我說的是,例如我可能有一個名爲DateTimePicker的用戶控件。該控件有一段依賴於我的SuperObject的JavaScript。現在,我明顯可以在OnSuccess事件中加載該腳本,但這不切合實際,因爲它意味着所有依賴於我的SuperObject的控件或任何子頁面都需要具有此邏輯。PS:很明顯datetimepicker只是一個例子 – 2010-12-21 04:48:00