1

基本的に、以下のコードは正常に機能します。「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);
}​

私はそれに対する私の試みを含めませんでしたが、必要に応じてそれを含めることができます、基本的に私はそれについて行く正しい方法を探しています、

ありがとう

4

1 に答える 1

0

これには、クライアント側のストレージにHTML5 仕様の 1 つを使用できます。

于 2012-11-10T21:19:50.470 に答える