Прототип 'on show' обработчик Event.observe - PullRequest
0 голосов
/ 25 мая 2010

Я пытаюсь сделать AJAX-запрос, который обновляет содержимое div, когда он отображается.Сначала я думал использовать наблюдателя событий, который следил за показом div, но я не могу найти подходящий обработчик.Есть ли простой способ сделать AJAX-запрос для элемента «на выставке»?

1 Ответ

0 голосов
/ 25 мая 2010

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

Это элементарная функция для проверки, находится ли элемент в области просмотра:

function withinViewport(el) {
    var elOffset = $(el).cumulativeOffset(el);
    vpOffset = document.viewport.getScrollOffsets();
    elDim = $(el).getDimensions();
    vpDim = document.viewport.getDimensions();
    if (elOffset[1] + elDim.height < vpOffset[1] || elOffset[1] > vpOffset[1] + vpDim.height ||
        elOffset[0] + elDim.width < vpOffset[0]  || elOffset[0] > vpOffset[0] + vpDim.width) {
        return false;
    }
    return true;
}

Затем вы можете - например - наблюдать событие прокрутки, чтобы проверить, переместился ли элемент в представление

Event.observe(window, 'scroll', function() {
       if(withinViewport('element')){
          new Ajax.Updater("element","script.php");
       }
});
...