Как зарегистрировать прослушиватель IcePush в портлете? - PullRequest
0 голосов
/ 03 августа 2011

Я хочу выполнить пользовательский код в обновлении IcePush Render. Сам IcePush работает нормально (также над несколькими портлетами)

Итак, что я хочу сделать, это точно изменить размер изображения до заданного соотношения сторон и разместить маркеры (известные из Google Maps). Но эти маркеры (и изображение) динамически обновляются через IcePush.

Так что, если я использую JQuery's ready (), он работает в первый раз, но после обновления страницы происходит сбой.

привет Флориан

1 Ответ

0 голосов
/ 10 августа 2011

Я решил это! Если вы измените код JS, он будет выполнен после обновления AJAX. Как это:

    <script type="text/javascript">
        function resizeStage() {
            var prefWidth=maxWidth*(1+(0.1*zoomFactor));
            jQuery(".slide_" + slideUUID).width(prefWidth);
            var actualWidth=jQuery(".slide_" + slideUUID).width();
            jQuery(".slide_" + slideUUID).height(actualWidth * 3 / 4); // Fix to 4x3
        }
        // This will be executed after AJAX Update
        // Because the var slideUUID changes after each AJAX Update
        var slideUUID = "#{navigationBackingBean.currentSlide.uuid}"; // To identify slide and to execute JS after AJAX udpate!

        resizeStage();
        jQuery(window).unbind('resize', resizeStage)
        jQuery(window).resize(resizeStage);
    </script>
...