1

有人可以帮我在无滚动刷新时添加 X 轴。我不希望它在每次刷新时经常滚动到顶部或左侧。

 <script type="text/javascript">
function refreshPage () {
     var page_y = document.getElementsByTagName("body")[0].scrollTop; 
     window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y;

}
     window.onload = function () {
         setTimeout(refreshPage, 1700);
            if (window.location.href.indexOf('page_y') != -1 ) {
                var match = window.location.href.split('?')[1].split("&")[0].split("=");
                document.getElementsByTagName("body")[0].scrollTop = match[1];

                                                                }
                                  }
</script>
4

2 回答 2

2

这已经是浏览器的行为(至少,我在 Firefox 和 Chrome 中测试过)。

虽然,由于您重新加载的方式,它没有这样做。使用方法重新加载它工作正常。

//location.reload(forceGet): forceGet is false by default
//false will make it load from the cache
window.location.reload()

但是如果你真的想手动做

var page_y = window.scrollY;

window.scrollTo(0, match[1])

在您当前的代码中,它将如下所示:

<script type="text/javascript">
function refreshPage () {
    var doc = document.documentElement
    var body = document.body;
    var page_y = window.scrollY || ((doc && doc.scrollTop) || (body && body.scrollTop || 0)) - (doc.clientTop || 0);
    window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y;
}
window.onload = function () {
    setTimeout(refreshPage, 1700);
    if (window.location.href.indexOf('page_y') != -1 ) {
        var match = window.location.href.split('?')[1].split("&")[0].split("=");
        window.scrollTo(0, match[1]);
    }
}
</script>

我不知道您想做什么,但是如果您需要,我建议您在本地更改一些内容,而不是重新加载整个页面。

编辑

要在多个平台上工作,请使用解决方案。

var doc = document.documentElement
var body = document.body;
var page_y = window.scrollY || ((doc && doc.scrollTop) || (body && body.scrollTop || 0)) - (doc.clientTop || 0);
于 2013-08-05T21:05:56.153 回答
0

采用:

function refreshPage() {
    var page_y = document.getElementsByTagName("body")[0].scrollTop;
    var page_x = document.getElementsByTagName("body")[0].scrollLeft;
    window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y + "&page_x=" + page_x;
}
window.onload = function () {
    setTimeout(refreshPage, 10000); // you can change the timer again but I don't recommend making it too fast
    var match = window.location.href.split('?')[1].split("&");    
    if (window.location.href.indexOf('page_y') != -1) { 
        document.getElementsByTagName("body")[0].scrollTop = match[0].split("=")[1]; // page_y
    }
    if (window.location.href.indexOf('page_x') != -1) {
        document.getElementsByTagName("body")[0].scrollLeft = match[1].split("=")[1]; // page_x
    }
}
于 2013-08-11T23:46:20.457 回答