您好我正在尝试创建一个刷新脚本来刷新包含消息,更新帖子等的页面。为什么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);
答案 0 :(得分:0)
scrollTo未执行,因为永远不会到达该行并且也是错误的。触发页面加载的那一刻,脚本执行停止。此外,window.location基本上是指地址栏,而scrollTo在这里没有意义。更好的是window.scrollTo,但没关系:
重新加载会保留滚动位置(在大多数浏览器中)和$ _GET变量,但浏览器通常希望用户确认重新加载POST请求。你可能不希望这种行为。
至少"矫枉过正"使浏览器滚动到新内容的方法是使用哈希标记,假设您可以控制更新的内容。 只需将#newcontent之类的内容添加到您的网址并设置新内容的ID:
<div id="newcontent">Cool new post...
浏览器会自动滚动到fragment identifier。