You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prestashop 1.7.8.0 属性变更后自动向上滚动行为的禁用方法咨询

解决Prestashop 1.7.8.0修改商品属性后页面自动上滚的问题

我之前也碰到过一模一样的情况,这种自动滚动一般是属性变更后,前端JS触发了滚动到顶部的逻辑——尤其是在更新商品价格、库存这类信息时特别常见。既然你的core.js已经被合并,下面给你两种可行的解决方法,优先推荐第一种(不碰核心文件,避免后续升级丢失修改):

方法一:添加自定义JS拦截滚动行为(推荐)

这种方法不需要修改合并后的核心文件,而是通过主题的自定义JS来覆盖或阻止滚动事件:

  1. 打开你的主题目录,找到自定义JS文件,通常路径是:themes/[你的主题名称]/assets/js/custom.js(如果没有这个文件,直接新建一个就行)。
  2. 在文件里添加以下代码:
// 监听商品属性更新完成事件,立即停止滚动动画
$(document).on('updatedProduct', function() {
    $('html, body').stop(true, false);
});

// 额外拦截属性选择框的变化事件,确保覆盖所有场景
$('.product-variants .input-group').on('change', function(e) {
    setTimeout(function() {
        $('html, body').stop(true, false);
    }, 100);
});
  1. 保存文件后,去Prestashop后台清理缓存(路径:高级参数→性能→清除缓存),然后刷新商品页面测试效果。

这段代码的逻辑是:当商品属性更新完成(触发updatedProduct事件)时,立刻终止页面的滚动动画;第二个监听则针对属性选择框的变化,延迟一点点时间停止滚动,确保覆盖所有可能触发滚动的场景。

方法二:修改合并后的JS文件(临时解决,不推荐)

如果上面的方法没起作用,你可以直接修改合并后的JS文件,但要注意清理缓存后修改会丢失,所以建议只用来临时测试,或者后续转用方法一永久解决:

  1. 找到合并后的JS文件,通常在var/cache/prod/js/目录下,文件名类似combined.min.js或者带主题标识的合并文件(比如theme-[主题ID]-combined.min.js)。
  2. 打开文件,搜索关键词scrollTop或者scrollTo,找到类似这样的代码片段:
$('html,body').animate({scrollTop:0},300)

或者:

window.scrollTo(0,0);
  1. 把这段代码注释掉或者直接删除,比如改成:
// $('html,body').animate({scrollTop:0},300)
  1. 保存文件,刷新页面测试即可。如果之后清理了缓存,记得重新修改或者换用方法一。

额外提示

  • 绝对不要直接修改核心的core.js文件,因为合并后的JS是从核心文件生成的,修改核心文件不仅会在下次合并时被覆盖,升级Prestashop时也会丢失所有修改。
  • 如果你的主题有自己的商品属性处理JS,也可以检查主题目录下的js/product.js文件,看看里面是否有触发滚动的代码,直接修改主题的JS文件会更安全。

内容的提问来源于stack exchange,提问作者Piotr Szary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:54:39