2010-05-25 2 views
0

Я пытаюсь сделать запрос AJAX, который обновляет содержимое div при отображении этого div. Моя первоначальная мысль заключалась в том, чтобы использовать наблюдателя событий, который наблюдал за отображением div, но я не могу найти подходящего обработчика. Есть ли простой способ сделать запрос AJAX для элемента 'on show?'Prototype 'on show' Обработчик Event.observe

ответ

0

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

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

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"); 
     } 
}); 
Смежные вопросы