2016-11-04 7 views
0

У меня есть Xpage, которая занимает слишком много времени для загрузки. Поэтому клиент попросит меня сделать индикатор загрузки. Я искал и нашел XSP.startAjaxLoading(), что я положил в onClientLoad событие пользовательского элемента управления. Но теперь я не знаю, где я должен положить XSP.endAjaxLoading(), чтобы экран загрузки исчез. Я использовал для использования в afterRenderResponse и beforeRenderResponse: view.postScript("XSP.endAjaxLoading()"), так как этот код CSJS, но он не работает.Где я должен использовать XSP.endAjaxLoading()?

Заранее спасибо.

+0

Будет ли он работать, если вы обернете XSP. endAjaxLoading() в методе XSP.addOnLoad()? –

+0

Пожалуйста, поделитесь своим решением в качестве ответа –

ответ

0

Я использовал этот ответ в виде раствора: https://stackoverflow.com/a/35481981/5339322
Я видел его несколько дней назад, что заставило меня думать дважды, что с помощью этого я должен знать, что делает мое XPages задержать. Я провел несколько тестов и обнаружил, что это был вызов метода в событии afterRestoreView, затем я перенес его в событие onClientLoad и использовал решение в приведенном выше ответе. Но я боюсь, что я должен следить за ним, поэтому, если кто-то добавит какой-то код, который задерживается в одном из других событий XPages, я должен снова его переместить, если это возможно, если это не так, Я разберусь с чем-то другим.

Спасибо за ответы на все вопросы.

0

Я думаю, вы хотите поместить его в onComplete событие. Это может быть трудно найти. Обычно вам нужно использовать элемент управления контура, чтобы найти его.

У меня есть демонстрация видео на NotesIn9, на которой есть пример.

http://www.notesin9.com/2016/02/19/notesin9-188-adding-a-please-wait-to-xpages/?unique=http%3A//www.notesin9.com/2016/02/19/notesin9-188-adding-a-please-wait-to-xpages/

0

Вашей попытка (view.postscript) работает только с полным/частичным обновлением и не работает для загрузки страницы.

Вы использовали onClientLoad - который выполняется, когда ваша страница заканчивается загрузкой. Думаю, вы получите анимацию ajax через некоторое время, и это не остановится.

Вы должны сделать предварительный экран экрана - очень простой XPage, который запускает анимацию и не хочет ее отключать. В onClientLoad событие перенаправляется на ваш медленный XPage. Это отбросит анимацию.

0

Я настоятельно рекомендую использовать Standby Dialog XSnippet https://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control. Я использую его как стандарт во всех приложениях XPages.

+0

Это только для частичного обновления? Это не касается начальной загрузки страницы, если это занимает некоторое время. –

+0

Извините, вы правы. Я не думаю, что может быть разрешение для начальной загрузки страницы. Все компоненты должны обрабатываться на сервере. Если это влияние на производительность, вам необходимо рассмотреть возможность использования свойства Dynamic Content Control или Loaded, где это необходимо. В противном случае вам нужно сократить количество контента на странице или предварительно вычислить некоторые данные. После обработки на сервере он отправляет в браузер все HTML, включая код onClientLoad. Тогда это разрешение не относится к XPages, а относится к общему веб-разработке. –

+0

Я думаю, что резолюция - это то, что я сделал в видео NotesIn9. Подделайте его так, чтобы страница загружалась, а затем после начальной загрузки выполняла частичное обновление для продолжительного процесса. –

Смежные вопросы