在 magento 的结帐页面上,我收到此错误:
VarienForm is not defined
[Break On This Error]
var loginForm = new VarienForm('login-form', true);
但是当我输入我的用户名和密码时,它会登录。我可以删除错误吗?
PS:我已将 varien js 库移至页脚。
在 magento 的结帐页面上,我收到此错误:
VarienForm is not defined
[Break On This Error]
var loginForm = new VarienForm('login-form', true);
但是当我输入我的用户名和密码时,它会登录。我可以删除错误吗?
PS:我已将 varien js 库移至页脚。
看起来您正在尝试调用尚未定义的函数,在 JavaScript 中,您需要在使用之前声明变量、函数和对象。
如果您将所有定义移到页脚并尝试在页面中间调用它们,您将收到“未定义”错误。
// Example Success
var test = "OK!";
alert(test) // Alerts: OK!
// Example Fail
alert(test); // Alerts: undefined
var test = "OK!";
简单的示例,但它适用于上面提到的所有内容,您使用的所有内容都必须在使用之前定义。
$(function() {
// Define VarienForm here somewhere
var loginForm = new VarienForm('login-form', true);
});
此代码应该在您的页面上运行而没有未定义的错误,并且可以放置在页脚或页眉中。
该错误意味着您的脚本不起作用 - 就是这样。事实上,您正在登录与 VarienForm 对象无关 - 这是一个带有提交按钮的 HTML 表单,因此它当然会提交并让您登录。 VarienForm 的主要任务是在提交之前验证表单数据。因此,通常如果您尝试使用空密码或登录名登录,VariendForm 会阻止提交表单。在您的情况下,当脚本被破坏时,它在提交之前不会做任何事情。
所以,对不起,但最好的建议是 - 不要移动这个库。是的,您可以修复会遇到此错误的每个页面,但这需要很长时间。如果您要安装第 3 方扩展,您很可能也必须修改它们。我不认为,这样的优化是值得的。
PS。除非您在玩 Magento 2,否则 VarienForm 基于 Prototype,而不是 jQuery,因此您的标签不正确,SnapGravy 的代码很可能无法工作。
可能是javascript框架冲突。
jQuery 与 Prototype 冲突,Prototype 是购物车功能、验证和窗帘效果中偏好使用的东西。
在 Prototype 之前的头部加载 jQuery,然后调用 jQuery noconflict 函数。
在这里回答了 Magento 中的 jQuery
将不同的东西移回它所属的地方。框架需要在页面加载之前加载,这样它们才能正常运行。