2

我已经在 J​​avaFx2 中加载了本地 html 文件。我正在滚动网页视图页面。当我到达页面末尾时,我需要收到警报消息。

怎么做?

4

1 回答 1

2

由于您在 web 视图中,您可以使用来执行此操作,将以下代码注入到加载的页面中:

setInterval(function() {
    var y = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
    y -= 12;
    var maxY = document.body.scrollHeight -  window.innerHeight;
    if (y == maxY)
    {
        alert('bottom');
    }
}, 200);

这将检查您是否每 200 毫秒向下滚动到底部。请注意,alert()当前 JavaFX 2.x 中不提供标准 javascript(但计划在 3.0 版中使用)。你必须自己处理它:

webview.getEngine().setOnAlert(new EventHandler<WebEvent<String>>() {
        @Override
        public void handle(WebEvent<String> e)
        {
            System.out.println("Alert: " + e.getData());
        }
    });

Alert: bottom当滚动到底部时,这应该打印到标准输出。未测试。测试和工作。

注意y -= 12:这是为了说明水平滚动条是否可见。12 是滚动条的标准高度(因此,如果您使用 CSS 设置滚动条样式,则需要对其进行修改)。此外,如果您不希望看到水平滚动条,则需要完全删除该行。出于这个原因,我建议使用 CSS 手动禁用水平滚动条。

另外,在相关说明中,由于某种原因,如果您处于全屏状态WebView,则将maxY始终是0. 目前似乎没有解决方法

于 2012-12-20T12:06:21.660 回答