今天发布了Internet Explorer 9,我决定查看我们在过去几个月内建立的几个Magento网站,看看是否所有内容都能继续使用新版本。
但不幸的是,它没有。我遇到了一个特殊问题,这个问题是由Magento 1.6.0.3版附带的原型库版本引起的。
看起来事件处理程序中的取消事件不起作用
例如,如果您尝试登录Magento商店,只是将登录名和密码字段留空,IE9即使出现错误也会提交表单,刷新后错误消失。
所以这是我认为的一个很大的问题。
所以我的问题是:我们如何处理这个问题?我认为有两种方法可以解决这个问题:
等待一个新的Magento发布并不是一个好主意,因为它可能需要几个星期才有一个,并且因为如果你运行的是非常旧版本的Magento,它将导致很多其他问题。
升级到最新的原型库可能是最好的想法,但是Magento中的所有内容都会继续使用最新版本的原型,有没有人有这方面的经验?
那么大家对这个问题的看法是什么? 除了我以外的任何想法?
答案 0 :(得分:16)
升级Prototype有可能打破Magento的很多东西(老实说,在Magento中做任何有可能打破Magento的很多东西),我创建了一个主题覆盖我的
app/code/design/frontend/{package}/{theme}/template/page/html/head.phtml
文件并将以下内容作为head标记下的第一个元素:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
这告诉IE在可能的情况下假装它是IE 8。这解决了一个问题,例如,如果您只启用了一种付款方式,则无法签出并完成付款流程,如在IE 9中,字段将全部显示为灰色。
请注意,它必须是<head>
下面的第一个标记。
由于以任何方式升级Magento都有可能导致问题,我觉得这是在短期内解决问题的最不具侵入性的方法。
答案 1 :(得分:1)
解决:http://www.alexanderinteractive.com/blog/2011/10/solving-the-ie-7-ie-9-magento-prototype-validation-bug/ 我在这上花了几天时间,发现真正有效的唯一方法就是在表单层面禁用东西。这应该解决你所有的问题。
答案 2 :(得分:0)
作为一个快速解决方案,我认为我会采用您所倡导的相同方法,并将Prototype升级到不包含此问题的版本。但是,Magento将会出现一个补丁(这个太大而不容忽视),此时,最好撤消更改并应用他们提供的补丁以保持正常升级。
手动挖掘Magento的JS内部很少值得,所以这个选项对我来说似乎有些偏差。可能有几个地方使用了这种语义,你可能会错过其中的一些。
希望有所帮助!
谢谢, 约瑟夫马斯蒂
答案 3 :(得分:0)
我已将prototype.js
文件更新为1.7,到目前为止它是正确的。我没有看到任何错误。如果您发现并发现错误,请通知!
答案 4 :(得分:0)
正确的解决方法在Magento forums。
在 template / catalog / product / view / tabs.phtml 中,更改以下行:
ul.select('li', 'ol').each(function(el){
到
ul.select('li').each(function(el){