magento原型问题

时间:2013-05-07 20:52:41

标签: javascript jquery magento prototype

我不是Magento开发人员,但我被要求修复Magento网站的问题。我不知道我和Magento在做什么,所以我希望有人能指出我正确的方向。

该网站正在生成javascript错误,所有这些错误似乎来自原型javascript库。

这是我看到的那种错误。

var newsletterSubscriberFormDetail = new VarienForm('newsletter-validate-detail'); "
output: anonymous function, error on varienform.initialize , 
error on      validadtion.initialize

如果您希望查看“在行动中”错误,该网站位于网址 http://loja.viavini.com.br/

我真的不知道从哪里开始,所以任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:1)

除了Alan Storm在这里提到的还有两个错误:

1)你在打电话     关于第2592行的$(document).ready(function() {}) - 必须将$更改为jQuery

2)你也在打电话     关于第3778行的jQuery("#pikame").PikaChoose({}) - 但是你在调用pikachoose.js之后重新定义了jQuery(通过在第67行调用相同的jQuery文件) - 它覆盖了之前的jQuery并用它“删除”PikaChoose

答案 1 :(得分:0)

你不需要知道关于Magento的事情来处理你的问题。

您链接的网站同时使用jQuery和Prototype。如果您在控制台中查看$的值,则它是主jQuery函数。

> $
function (e,n){return new x.fn.init(e,n,t)}

我不能确定为什么会这样,但我的第一个调查领域是你所包含的多个jQuery库。在页面顶部附近使用

<script type="text/javascript" src="http://loja.viavini.com.br/js/my_ibanner/jquery.js"></script>
<script type="text/javascript" src="http://loja.viavini.com.br/js/my_ibanner/jquery.noconflict.js"></script>

这通常足以使jQuery和原型一起运行。但是,稍后在页面中包含另一个jQuery库

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

第二个jQuery重新定义$,但不会重新调用jQuery.noConflict()。这意味着原型和jQuery不再存在于您的页面上。

正确的做法是确定您的网站需要哪个版本的jQuery,并确保它只包含该单个库,然后调用无冲突方法。

要做的权宜之处就是找到2.0.0 jQuery的插入,并在此之后添加一个无冲突的调用 - 在脚本块中,通过相同的<script type="text/javascript" src="http://loja.viavini.com.br/js/my_ibanner/jquery.noconflict.js"></script>标记。