Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Magento sites in IE9, prototype bugs

Internet Explorer 9 was released today, and I decided to check a few Magento sites we build in the last couple of months to see if everything continues to work with the new version.

But unfortunately it doesn't. I came across one particular problem that is caused by the version of the prototype library which is shipped with Magento, version 1.6.0.3.

It looks like the cancelling events in eventhandlers isn't working.
For example, if you try to log in to a Magento shop, and just leave the login and password fields empty, IE9 submits the form even if there were errors, and the errors disappear after the refresh.
So that's quite a big problem I think.

So my question is: how can we deal with this problem? I see a couple of ways to deal with this:

  • Wait for Magento to release a new version with fixes
  • Upgrade the prototype library to the latest version which probably already has fixed the issue
  • Mess around in the existing library and try to fix the bug in there

Waiting for a new Magento release isn't a good idea because it probably will take a few weeks before there is one, and because it will cause a whole lot of other problems if you are running a very old version of Magento.
Upgrading to the latest prototype library is probably the best idea, but will everything in Magento continue to work with the latest version of prototype, does anybody has any experience with this?

So what's everybody's opinion about this problem? Any ideas other than mine?

like image 240
Pieter Hoste Avatar asked Mar 15 '11 12:03

Pieter Hoste


2 Answers

As upgrading Prototype has the potential to break a lot of things in Magento (and, honestly, doing anything in Magento has the potential to break a lot of things in Magento), I created a theme override for my

app/code/design/frontend/{package}/{theme}/template/page/html/head.phtml

file and slapped the following as the first element under the head tag:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

This tells IE to pretend as if it is IE 8, where possible. This solved an issue where, for example, you could not check out and complete the payment process if you only have one payment method enabled, as in IE 9 the fields will all be grayed out.

Note that it really must be the first tag underneath the <head>.

Since upgrading Magento in any way has the potential to cause problems, I feel this is the least intrusive way to solve the issue in the near term.

like image 127
Nicholas Piasecki Avatar answered Nov 15 '22 19:11

Nicholas Piasecki


Solved: http://www.alexanderinteractive.com/blog/2011/10/solving-the-ie-7-ie-9-magento-prototype-validation-bug/ I spent a couple days on this, and discovered the only thing that truly works is disabling things at the form level. This should solve all your problems.

like image 41
Mike LeDoux Avatar answered Nov 15 '22 19:11

Mike LeDoux