Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 页面刷新时的更新功能_Javascript_Jquery - Fatal编程技术网

Javascript 页面刷新时的更新功能

Javascript 页面刷新时的更新功能,javascript,jquery,Javascript,Jquery,我有一个简单的javascript函数来检测页面滚动 一切正常 唯一的遗漏是,当页面刷新时,滚动条不会被保留,因此需要恢复 我认为这可能很简单,比如用类似于$(window.on(“load”,docScroll())的内容替换pub.init中对docScroll()的直接调用;在挫折中但不幸的是,这不起作用 有人提供建议吗 var scroll = function () { var pub = {}, timeout = null; function reset() {

我有一个简单的javascript函数来检测页面滚动

一切正常

唯一的遗漏是,当页面刷新时,滚动条不会被保留,因此需要恢复

我认为这可能很简单,比如用类似于
$(window.on(“load”,docScroll())的内容替换pub.init
中对
docScroll()的直接调用;在挫折中
但不幸的是,这不起作用

有人提供建议吗

var scroll = function () {
    var pub = {}, timeout = null;

    function reset() {
        if (typeof (timeout))
            clearTimeout(timeout);

        timeout = setTimeout(function () {
            docScoll();
        }, 200);
    }

    function docScroll() {
        $body = $("body");
        var headerHeight = $("#header").height();

        $(document).scroll(function () {
            if ($(window).scrollTop() > headerHeight) {
                $body.addClass("scrolling");
            }
            else {
                $body.removeClass("scrolling");
            }
        });
    }

    function setBindings() {
        $(window).on("resize", reset);
    }

    pub.init = function () {
        setBindings();
        docScroll();
    }

    return pub;
} ();

滚动事件处理程序应设置一次。所以我会这样做:

var scroll = function () {
    var pub = {};

    function docScroll() {
        var $body = $("body");
        var headerHeight = $("#header").height();

        if ($(window).scrollTop() > headerHeight) {
            $body.addClass("scrolling");
        }
        else {
            $body.removeClass("scrolling");
        }
    }

    function setBindings() {
        $(document).scroll(docScroll);
    }

    pub.init = function () {
        setBindings();
        docScroll();
    }

    return pub;
} ();

滚动事件处理程序应设置一次。所以我会这样做:

var scroll = function () {
    var pub = {};

    function docScroll() {
        var $body = $("body");
        var headerHeight = $("#header").height();

        if ($(window).scrollTop() > headerHeight) {
            $body.addClass("scrolling");
        }
        else {
            $body.removeClass("scrolling");
        }
    }

    function setBindings() {
        $(document).scroll(docScroll);
    }

    pub.init = function () {
        setBindings();
        docScroll();
    }

    return pub;
} ();

什么时候调用init()?init在文档中被调用。Readywhy这还不够?刷新页面时,变量被重置。如果需要在刷新之间存储数据,可以尝试
localStorage
,然后在“文档准备就绪”或“页面加载”事件中读取以前的数据并根据需要滚动。@johnohar!超时句柄中有一个输入错误,何时调用init()?init在文档中被调用。就绪为什么这还不够?刷新页面时,变量被重置。如果需要在刷新之间存储数据,可以尝试
localStorage
,然后在“文档准备就绪”或“页面加载”事件中读取以前的数据并根据需要滚动。@johnohar!而且超时句柄中有一个输入错误,如果存储变量,它可以正常工作。为了完整性,我添加了回调docScroll()的resize事件。标题在方向上改变大小。感谢您的帮助。如果存储变量,测试和工作不会带来复杂问题。为了完整性,我添加了回调docScroll()的resize事件。标题在方向上改变大小。谢谢你的帮助。