Jquery,Magento的奇怪问题

时间:2014-04-04 10:08:30

标签: php jquery magento

我一直在对每个这样的产品使用“Quick View”的自定义扩展程序 enter image description here

当悬停图片时,该链接将显示。单击该链接时,将显示带有大图像的详细说明。它在产品列表页面中运行良好。但是在主页中,我在img_height.js第7行中遇到了“TypeError:d未定义”的错误

enter image description here

我已经检查了该文件并发出警告,以便找到d所持有的值。我收到了像 [object object] 这样的警报。(多个警报来了)。

d=Element.retrieve(a,"prototype_event_registry",$H()));
alert(d);  //undefined d
var e=d.get(b);
Object.isUndefined(e)&&(e=[],d.set(b,e));  

关闭提醒框后,选中“阻止此页面创建其他对话框”复选框。

那时,我得到的错误就像“NS_ERROR_NOT_AVAILABLE:”

enter image description here

但是我只在主页上有警报框,而不是在产品列表页面。提醒后,Quick Look也在主页上运行良好。但如果我删除警报,我又得到同样的错误“TypeError:d未定义”

而且介于两者之间,我得到了大多数错误,例如“$。browser is undefined”,“typeerror $(...)。live不是函数”。我已通过添加此脚本"<script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>"

修复了这些问题

但我无法解决真正的问题。这个问题耗费了大约3天的时间。我仍然不知道为什么会这样发生。

如果有人有想法,请救救我们......

1 个答案:

答案 0 :(得分:1)

当我遇到这种事情时,它是:

a)因为产品页面正在加载一些主页上没有的额外脚本。在这种情况下,请研究产品页面的页面源,并检查所有加载的脚本和所有内联脚本。将其与主页的页面源进行比较,非常谨慎地区分不同版本的jQuery,并确保jQuery始终为.noConflict(),以便Magento的prototype.js可以拥有$。也许主页有一些其他模块可以在Quick Look脚本之前或之后加载不同版本的jQuery。

或者

b)因为HTML页面上没有脚本所需的某些HTML元素。因此,例如,产品页面可能具有JavaScript将引用的DOM元素<div id="my-special-quick-look-box">,但在主页上可能缺少此元素或处于意外的祖先 - 子关系中。或者,div存在但CSS意味着它没有高度或缺少JavaScript试图引用的某些属性。

或者

c)如果将所有JavaScript组合到一个文件中,它会更改运行顺序,并且在运行脚本时,通常会出现稍后存在的某些DOM元素。因此,如果您将JavaScript结合起来,请注意正在运行的顺序,并使用DOM事件来了解何时加载,然后在正确的时间运行JavaScript。

这是我的经验。也许它会帮助你找到错误。