为什么这个脚本不执行scrollTo(x,y)javascript?

时间:2016-03-22 21:42:35

标签: javascript

您好我正在尝试创建一个刷新脚本来刷新包含消息,更新帖子等的页面。为什么x,y没有使用ex:1执行?我已经看到了一些重新加载页面和保持滚动位置的方法,但它们看起来有些过分。我想我想使用ex:2,是否有任何逻辑方法可以使用reload()清除服务器端变量,或者我应该选择其他类似的路由?

    function Refresh()
    {

        var x = window.pageXOffset;
        var y = window.pageYOffset;

        //ex 1:this works but doesnt keep scroll position
        //window.location = window.location.href;

        //ex 2: this works and retains x,y but doesnt refresh $_POST $_GET server side variables
        window.location.reload();

        window.location.scrollTo(x,y);
    }
    //for testing only
    setInterval('Refresh()', 5000);

1 个答案:

答案 0 :(得分:0)

scrollTo未执行,因为永远不会到达该行并且也是错误的。触发页面加载的那一刻,脚本执行停止。此外,window.location基本上是指地址栏,而scrollTo在这里没有意义。更好的是window.scrollTo,但没关系:

重新加载会保留滚动位置(在大多数浏览器中)和$ _GET变量,但浏览器通常希望用户确认重新加载POST请求。你可能不希望这种行为。

至少"矫枉过正"使浏览器滚动到新内容的方法是使用哈希标记,假设您可以控制更新的内容。 只需将#newcontent之类的内容添加到您的网址并设置新内容的ID:

<div id="newcontent">Cool new post... 

浏览器会自动滚动到fragment identifier