Событие javascript автоматического обновления веб-части SharePoint?

Фон: я изменяю веб-часть списка SharePoint с помощью JSLink. Я также добавляю jQuery и jQuery-UI, чтобы элементы списка отображались как jQuery Accordion. Он работает хорошо, за исключением того, что мне также нужно реализовать автоматическое обновление ajax в веб-части, чтобы обновлять контент каждые 60 секунд.

Проблема: при обновлении веб-части выполняется возврат кода jquery - элементы больше не отображаются в режиме аккордеона. Я могу открыть консоль браузера и ввести код jquery вручную, например $(".selector").accordion();, и он отлично работает. Это заставляет меня думать, что мне нужно найти способ вызывать код jquery после завершения каждого автоматического обновления веб-части.

Вопрос. Итак, существует ли событие javascript или способ узнать, когда срабатывает автоматическое обновление в моей веб-части, чтобы я мог снова вызвать свой аккордеон jquery после? Могу ли я чего-то еще упустить?

Спасибо за ваше время!


person jorluiseptor    schedule 08.10.2015    source источник


Ответы (2)


Ответ заключался в использовании этого кода:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(MyFunction); 

function MyFunction() { 
    //do something here; 
}

Кредит для @Thriggle

Ссылки: https://msdn.microsoft.com/en-us/library/bb311028.aspx https://www.daniweb.com/programming/web-development/threads/247263/ajax-postback-after-endrequest

person jorluiseptor    schedule 08.10.2015
comment
Не стесняйтесь отмечать это как ответ (теперь, когда у вас 15+ репутации), чтобы люди знали, что ваш вопрос решен. (И да, кошерно отвечать на собственные вопросы!) - person Thriggle; 08.10.2015

Я считаю, что вы можете вставить свой собственный код или вызовы функций в цепочку обратных вызовов, переопределив метод _onFormSubmit текущего экземпляра объекта Sys.WebForms.PageRequestManager.

Sys.WebForms.PageRequestManager.getInstance()._onFormSubmit = function(i){

    Sys.WebForms.PageRequestManager.prototype._onFormSubmit.call(this,i);

    alert("Refreshing the data..."); // -- your code or function call here

};

Когда я запустил приведенный выше код в консоли F12 на странице со списком, который обновлялся за 25 секунд, я начал видеть всплывающее окно «Обновление данных ...» каждые 25 секунд, но у меня этого не было. протестировал это с чем-то более сложным, чем это.

person Thriggle    schedule 08.10.2015
comment
Собственно, ваш ответ позволил мне ответить. Код, который вы мне дали, запускается прямо перед автообновлением. Мне это нужно сразу после. Я поискал в сети и нашел очень похожий код: Sys.WebForms.PageRequestManager.getInstance().add_endRequest(MyFunction); MyFunction() { //do something here; } Я хочу отдать вам должное за ответ. @Thriggle - person jorluiseptor; 08.10.2015
comment
Рад, что немного помог! Хорошая находка - справочник по классу MSDN Sys.WebForms.PageRequestManager. - person Thriggle; 08.10.2015