javascript - 当页面完成加载时,jquery 滚动事件延迟触发

标签 javascript jquery css prestashop

我正在为 prestashop 1.7 创建主题,但我真的不认为这与我遇到的问题有关。 (更新:我认为这可能与 prestashop 的运作方式有关,因为作为独立的它可以正常工作)

prestashop 1.7 附带 jquery 2.2.4。

我想为用户提供一个 float 的购物车图标,该图标将固定在 left:0 top:50%,并且当用户将页面滚动到将动画重新定位时。

所以我的 float 购物车有这个初始 CSS:

div#floating_cart {
  position: absolute;
  top: 50%;
  left: 1%;
}

这是捕捉滚动的javascript代码:

   $(window).scroll(function () {
        $('#floating_cart').animate({top:Math.floor($(window).scrollTop() +(window.innerHeight/2))},100,"swing");
    });

问题是在页面加载后我尝试滚动,仅在 4-5 秒后购物车开始其堆栈中的所有重新定位动画。

有什么想法可以解决这个延迟吗?

更新

如果我只设置 position:fixed,购物车会毫无问题地停留在选定的位置。但我想让它有点动画。

所以我尝试使用以下代码:

$(function() {

    $(window).on("load", function () {
        $(window).scroll(function () {
            $('#floating_cart').css('position', 'absolute');
            $('#floating_cart').stop();
            $('#floating_cart').animate({top: Math.floor($(window).scrollTop() + (window.innerHeight / 2))}, 300, "swing");
        });
    }); 
});

结果完全一样。

所以我改变了 float 购物车的CSS:

div#floating_cart {
  position: fixed;
  top: 49%;
  left: 1%;
}

我在附加到滚动之前添加了 8 秒的延迟,并将位置设置为 absolute 而不是 fixed

$(function() {

    $(window).on("load", function () {
        setTimeout(function() {
            $(window).scroll(function () {
                $('#floating_cart').css('position', 'absolute');
                $('#floating_cart').stop();
                $('#floating_cart').animate({top: Math.floor($(window).scrollTop() + (window.innerHeight / 2))}, 300, "swing");
            });
        },8000);

    });
});

现在我认为这可能与 prestashop 加载内容的方式有关。 我怎样才能进一步调查这个问题?加载页面时代码被压缩,因此很难调试

最佳答案

也许它不起作用,因为您在页面加载时没有所有可用的资源。尝试检查 jquery 的包含是否没有使用 async 属性。

您还可以在大多数网络浏览器中通过网络资源检查器在页面加载时录制脚本

关于javascript - 当页面完成加载时,jquery 滚动事件延迟触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47726516/

相关文章:

javascript - 每次使用 React Navigation 显示选项卡栏屏幕时重新加载 AsyncStorage 数据

Javascript:OnChange 未触发

javascript - 带有抛物线动画的飞行气球

javascript - 您可以在 native 模块中突破严格模式吗?

javascript - 异常不抛出我的字符串 - 它抛出文字异常而不是我的抛出

javascript - jquery 行高动态调整大小

jquery - 如何使用 jQuery 获取所有元素 css 属性的列表?

html - 如何使用分类数据创建下拉列表?

css - 删除线 li 元素

javascript - onclick事件中定义的标签,如 "javascript:bSubmitted=true"