2012-02-28 2 views
0

У меня есть div, который перезагружается с обновлением ajax (при нажатии на ссылку href «НАЖМИТЕ ЗДЕСЬ!»).Наблюдайте за событием «Window Onload» в обновленном DIV-элементе

В этом div есть наблюдатель событий для «окна onload». Это событие срабатывает только при перезагрузке страницы в браузере, а не при нажатии «НАЖМИТЕ ЗДЕСЬ». Хотя evalScripts имеет значение true.

Функция "refreshDiv":

new Ajax.Updater('ajax', ajaxUrl, { 
     method: 'post', 
     parameters: {...}, 
     evalScripts: true, 
     onComplete: function() {..} 
} 

HTML-:

<div id="ajax"> 
    <a href="" onclick="return refreshDiv('ajax');">CLICK HERE!</a> 

    <?php trigger here> 
    <script type="text/javascript" language="javascript"> 
     Event.observe(window, 'load', function() { release(); }); 
    </script> 
    <? php trigger end> 
</div> 

я должен поставить его в разделе DIV, который становится перегружается, потому что есть триггер с PHP, который решает вывести функцию release(); или нет.

Может ли кто-нибудь помочь здесь?

ТИА Matt

ответ

1

Очевидно, что окно уже загружен к тому времени ваш AJAX выполняет так что нет никакого события окна нагрузки. Если вы знаете, это то HTML часть выглядит намного проще:

<div id="ajax"> 
    <a href="" onclick="return refreshDiv('ajax');">CLICK HERE!</a> 

    <?php trigger here ?> 
    <script type="text/javascript" language="javascript">release();</script> 
    <?php trigger end ?> 
</div> 

Вам может понадобиться, чтобы проверить запрос страницы действительно AJAX, в этом случае он должен быть частью триггера PHP.


PS. function() { release(); } - это просто более длинный способ сказать release - вы могли бы использовать это изначально.

+0

благодарит за вашу помощь. это хороший способ. но как узнать, является ли запрос ajax уже «полным». мне не нужно проверять, уже ли он загружен? – frgtv10

+0

, потому что «release()» отображает div внутри перезагруженной секции – frgtv10

+0

, иногда он отображает «release()» не определен ... :) – frgtv10

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