使用NavigationHandler.handleNavigation并不显示页面顶部

时间:2016-08-05 13:02:01

标签: ajax jsf navigation

我正在使用此处建议的NavigationHandler.handleNavigation(ExternalContext.dispatch() not working),因为我正在使用ajax请求。

它有效,但我看到页面中间的下一页(或多或少),而不是在页面顶部看到它。

我尝试使用此处建议的锚点(http://www.computerhope.com/issues/ch001475.htm),但它也不起作用。

知道发生了什么事吗?

这是我的代码:

context.getApplication().getNavigationHandler().handleNavigation(context, null, "/user-registration.xhtml#top");

我在下一页正文的开头添加了以下内容:

<a name="top"></a>

2 个答案:

答案 0 :(得分:1)

将窗口滚动到顶部的正确方法是window.scrollTo() xy 0

window.scrollTo(0, 0);

这可以使您的URL不受哈希片段混乱的影响。

为了在每个JSF ajax事件成功时调用它,请在文档中包含以下脚本。

jsf.ajax.addOnEvent(function(data) {
    if (data.status == "success") {
        window.scrollTo(0, 0);
    }
});

另见:

答案 1 :(得分:0)

最后我用以下脚本解决了它:

<script type="text/javascript">
  $(document).ready(function() {
    location.hash = "#top";
  });
</script>