0

我正在尝试发出一个 AJAX 请求,以在显示该 div 时更新该 div 的内容。我最初的想法是使用一个事件观察器来监视要显示的 div,但我似乎找不到合适的处理程序。是否有一种简单的方法可以对“正在展示”的元素发出 AJAX 请求?

4

1 回答 1

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");
       }
});
于 2010-05-25T08:31:44.137 回答