基本的に、以下のコードは正常に機能します。「rate」の値に基づいてページベースを更新し、ページの更新後もページのスクロール位置を維持します。
私がやろうとしているのは、選択テーブルを追加して更新の速度、つまり「rate」の値を調整することです。jsでの私の少しの経験で、選択テーブルを追加し、選択した値でレートを設定することができました。問題は、ページが選択テーブルの値を更新すると、デフォルトでテーブルの最初の値(私の場合は「5」)になることです。 。2番目の問題は、テーブルの値を変更すると、新しい値が選択されるたびにページが一番上にスクロールすることです。
var rate = 10; // refresh rate
function refresh() {
document.cookie = 'scrollTop=' + filterScrollTop();
document.cookie = 'scrollLeft=' + filterScrollLeft();
document.location.reload(true);
}
function getCookie(name) {
var start = document.cookie.indexOf(name + "=");
var len = start + name.length + 1;
if (((!start) && (name != document.cookie.substring(0, name.length))) || start == -1) return null;
var end = document.cookie.indexOf(";", len);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(len, end));
}
function deleteCookie(name) {
document.cookie = name + "=" + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
function setupRefresh() {
var scrollTop = getCookie("scrollTop");
var scrollLeft = getCookie("scrollLeft");
if (!isNaN(scrollTop)) {
document.body.scrollTop = scrollTop;
document.documentElement.scrollTop = scrollTop;
}
if (!isNaN(scrollLeft)) {
document.body.scrollLeft = scrollLeft;
document.documentElement.scrollLeft = scrollLeft;
}
deleteCookie("scrollTop");
deleteCookie("scrollLeft");
setTimeout("refresh()", rate * 1000);
}
function filterResults(win, docEl, body) {
var result = win ? win : 0;
if (docEl && (!result || (result > docEl))) result = docEl;
return body && (!result || (result > body)) ? body : result;
}
// Setting the cookie for vertical position
function filterScrollTop() {
var win = window.pageYOffset ? window.pageYOffset : 0;
var docEl = document.documentElement ? document.documentElement.scrollTop : 0;
var body = document.body ? document.body.scrollTop : 0;
return filterResults(win, docEl, body);
}
// Setting the cookie for horizontal position
function filterScrollLeft() {
var win = window.pageXOffset ? window.pageXOffset : 0;
var docEl = document.documentElement ? document.documentElement.scrollLeft : 0;
var body = document.body ? document.body.scrollLeft : 0;
return filterResults(win, docEl, body);
}
私はそれに対する私の試みを含めませんでしたが、必要に応じてそれを含めることができます、基本的に私はそれについて行く正しい方法を探しています、
ありがとう