我可以在Magento页面上找到不需要的JavaScript吗?

我可以在Magento页面上找到不需要的JavaScript吗?,javascript,magento,Javascript,Magento,我在Magento 1.7安装上有一个产品页面,该产品具有分层定价。它应该说购买4并保存13%,在13%的值被100%覆盖之前,它会在一瞬间这样做,这是不正确的。我只能假设页面上有一些错误的JavaScript导致了这种情况,但我不知道如何找到它。有人能给我一些建议,如何找到和修复这个错误,请 以下是页面:查看了Chrome检查器中的HTML元素:class=benefit 在loupe.js文件的“资源”选项卡中的1 match中搜索.benefit 转到脚本选项卡,loupe.js文件,美化

我在Magento 1.7安装上有一个产品页面,该产品具有分层定价。它应该说购买4并保存13%,在13%的值被100%覆盖之前,它会在一瞬间这样做,这是不正确的。我只能假设页面上有一些错误的JavaScript导致了这种情况,但我不知道如何找到它。有人能给我一些建议,如何找到和修复这个错误,请


以下是页面:

查看了Chrome检查器中的HTML元素:class=benefit

在loupe.js文件的“资源”选项卡中的1 match中搜索.benefit

转到脚本选项卡,loupe.js文件,美化代码,搜索.benefit

       $$('.benefit').each(function(el) {
            var parsePrice = function(html) {
                return parseFloat(/\d+\.?\d*/.exec(html));
            };
            var container = $(this.containers[3]) ? this.containers[3] : this.containers[0];
            var price = parsePrice($(container).innerHTML);
            var tierPrice = $$('.price.tier-' + i);
            tierPrice = tierPrice.length ? parseInt(tierPrice[0].innerHTML, 10) : 0;
            var $percent = Selector.findChildElements(el, ['.percent.tier-' + i]);
            $percent.each(function(el) {
                el.innerHTML = Math.ceil(100 - ((100 / price) * tierPrice));
            });
        }, this);
感谢Chrome Inspector在不到一分钟内找到了脚本

现在,罪魁祸首来了:

el.innerHTML = Math.ceil(100 - ((100 / price) * tierPrice));

这是一个简单的数学计算。我不知道tierPrice是什么,但我相信您可以找到正确的商业数学计算方法。ceil将该数字四舍五入。

对于那些对Magento 1.7中的漏洞感兴趣的人来说,在Magento 1.7中,层价格节约始终显示为100%,这是修复方法:

在js/varien/product.js中,在第748行更改以下内容:

for (var i = 0; i < this.tierPrices.length; i++) {

实际上是

for (var i > 0; i < this.tierPrices.length; i++) {
如果您将其替换为1,它将只计算第一层价格的正确节省百分比,而不是其他价格,之后它们仍将设置为100%

虽然他需要计算所有层的价格,所以如果i大于0,他需要计算正确的层百分比,否则与产品价格相同或等于0或100%


希望对您有所帮助尽管这篇文章很好地揭示了问题的根源,但我发现页面上的解决方案只是阻止代码运行,实际上并不能解决问题。我已在此处发布了此问题的解决方案:


您是否尝试在浏览器中禁用Javascript并重新加载页面?我会这样做,以确保你没有调试一个非bug。愚蠢的规则:逐个禁用并找到文件。我在这里概述了解决此问题的方法:Math.ceil不是向上舍入,不是向下舍入?没问题。找到这个问题做得很好。更多关于如何钓鱼的教学-Majd Taby的这篇文章很精彩-非常感谢。。。你教会了我一些关于chrome inspector的知识,尤其是“美化”工具。不幸的是,我仍然完全不明白为什么我没有得到正确的值,但至少我现在知道从哪里开始查找,以及如何使用检查器继续查找。再次感谢!
for (var i > 0; i < this.tierPrices.length; i++) {