2016-11-04 90 views
0

我有一個Xpage,加載時間太長。所以客戶要求我做一個加載指示器。 我搜索並找到了XSP.startAjaxLoading(),那我把onClientLoad事件放到了自定義控件中。 但現在我不知道我應該在哪裏放XSP.endAjaxLoading()來使加載屏幕消失。 我試過在afterRenderResponse和beforeRenderResponse中使用:view.postScript("XSP.endAjaxLoading()"),因爲這個命令是CSJS,但它不起作用。我應該在哪裏使用XSP.endAjaxLoading()?

在此先感謝。

+0

如果包裝XSP,它會起作用嗎? XSP.addOnLoad()方法中的endAjaxLoading()? –

+0

請分享您的解決方案作爲回答 –

回答

0

我用這個答案的解決方案:https://stackoverflow.com/a/35481981/5339322
我已經看到了前幾天,是什麼讓我三思的是,使用這個我應該知道什麼是當仁不讓的XPages延遲。我運行了一些測試並發現了什麼,它是在afterRestoreView事件中對一個方法的調用,然後我將它遷移到了onClientLoad事件,並在上面引用的答案中使用瞭解決方案。但是我擔心我必須密切關注它,所以如果有人添加了一些延遲XPage另一個事件的代碼,我必須再次移動它,當然,如果可能的話,如果不是這樣,我會弄清楚一些不同的東西。

感謝所有答案和評論。

0

您嘗試(view.postscript)只適用於全部/部分更新和頁面加載不起作用。

您已使用onClientLoad - 當您的頁面加載完成時執行該操作。我想你會在一段時間後得到ajax動畫,它不會停止。

你應該使預加載屏幕 - 非常簡單的XPage,它啓動動畫,並不關心它關閉。在onClientLoad事件重定向到您的慢XPage。這將放棄動畫。

0

我強烈建議使用備用對話框XSnippet https://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control。我將它用作所有XPage應用程序的標準。

+0

這僅適用於部分刷新嗎?如果需要一段時間,則不會觸及初始頁面加載。 –

+0

對不起,你是對的。我不認爲可以有初始頁面加載的解決方案。所有組件都需要在服務器上處理。如果這是性能影響的地方,則在適當的情況下,您需要考慮使用動態內容控制或Loaded屬性。否則,您需要減少頁面上的內容量或預先計算一些數據。一旦在服務器上處理完畢,它會將所有HTML,包括onClientLoad代碼發送到瀏覽器。然後,解決方案不是特定於XPages,而是一般Web開發。 –

+0

我認爲這個決議就是我在NotesIn9視頻中所做的。假裝它加載頁面,然後在初始加載後爲長時間運行的進程執行部分刷新。 –