Раздражающая задержка, прежде чем я смогу нажать кнопку после открытия XPage

когда я открываю XPage с большим количеством ssjs. У меня всегда проблема, что когда я нажимаю кнопку (с ssjs в ней) сразу после открытия страницы, ничего не происходит. Когда я жду 1 или 2 секунды, все работает как положено. Кажется, что не все загружается достаточно быстро.

Есть ли событие, чтобы увидеть, полностью ли загружен документ? Я пробовал события jquery и dojo onready, а также событие onClientLoad. Но все эти события запускаются сразу после открытия страницы (но не до конца загрузки).


person Pudelduscher    schedule 11.08.2014    source источник


Ответы (2)


Вы можете добавить следующее событие onClientLoad в качестве javascript на стороне клиента:

XSP.addOnLoad(new function() {
// this will run when everything is ready...
});

Вот почему вы видите задержку для событий кнопки. Все обработчики событий связываются с помощью того же механизма, что и выше.

person Serdar Basegmez    schedule 11.08.2014
comment
я добавляю это в scriptBlock в свой документ... но он также запускает событие сразу после открытия документа, а не когда документ готов. - person Pudelduscher; 11.08.2014
comment
Проблема с блоком сценария: введенный вами код будет выполняться перед другими функциями onLoad, которые подготавливают все обработки событий. Сколько компонентов у вас есть на странице? Обычно пользователь не должен замечать такой разницы во времени между onLoad и привязкой. - person Serdar Basegmez; 11.08.2014
comment
Компонентов много, и часть кода, вероятно, не оптимизирована. Но куда мне добавить XPS.addOnLoad? - person Pudelduscher; 11.08.2014
comment
Перейдите на вкладку событий XPage, выберите событие onClientLoad, выберите «Клиент» и напишите в редакторе скриптов. - person Serdar Basegmez; 11.08.2014
comment
хм... не имеет значения... Есть ли способ расставить приоритеты привязки? - person Pudelduscher; 11.08.2014
comment
Тогда должно быть что-то еще, замедляющее процесс привязки. Я создал сотни компонентов с привязкой на стороне сервера, и они загружаются и готовятся за несколько миллисекунд. Я предлагаю проверить страницу с помощью firebug или аналогичной утилиты, чтобы увидеть последовательность загрузки. Сетевая панель или может быть полезна в таких случаях. - person Serdar Basegmez; 11.08.2014

Это я был виноват. Я только что узнал, что в более чем 30 панелях есть пустой метод onClientLoad. После того, как я удалил события, моя страница должна загружаться 500 мс вместо 2,5 с, а также событие XSP.addOnLoad, чтобы увидеть, готова ли страница, теперь работает, как ожидалось.

Спасибо @Serdar Basegmez за вашу помощь.

person Pudelduscher    schedule 11.08.2014
comment
Обнаружение этого также может помочь решить проблему просмотра в вашем предыдущем вопросе, если он находится на том же XPage. - person Steve Zavocki; 11.08.2014
comment
К сожалению, эта проблема находится на другой странице, на которой нет этой проблемы с событием. Но спасибо - person Pudelduscher; 11.08.2014