Места Magento в IE9, прототипы ошибок

Сегодня был выпущен Internet Explorer 9, и я решил проверить несколько сайтов Magento, которые мы создали за последние пару месяцев, чтобы узнать, продолжает ли все работать с новой версией.

Но, к сожалению, это не так. Я столкнулся с одной конкретной проблемой, вызванной версией библиотеки прототипов, которая поставляется с Magento версии 1.6.0.3.

Похоже, что отменяющие события в обработчиках событий не работают.
Например, если вы попытаетесь войти в магазин Magento и просто оставите поля входа и пароля пустыми, IE9 представит форму, даже если были ошибки, и ошибки исчезнут после обновления.
Так что я думаю, что довольно большая проблема.

Итак, мой вопрос: как мы можем справиться с этой проблемой? Я вижу пару способов справиться с этим:

  • Подождите, пока Magento выпустит новую версию с исправлениями
  • Обновите библиотеку прототипов до последней версии, которая, вероятно, уже устранила проблему.
  • Обмениваться в существующей библиотеке и попытаться исправить там ошибку.

Ожидание нового выпуска Magento не является хорошей идеей, потому что, вероятно, потребуется несколько недель, прежде чем он появится, и потому что это вызовет массу других проблем, если вы используете очень старую версию Magento.
Обновление до последней библиотеки прототипов, вероятно, лучшая идея, но все ли в Magento продолжит работу с последней версией прототипа, не имеет ли у кого-нибудь опыта?

Итак, что все думают об этой проблеме? Любые идеи, кроме моих?

Ответы

Ответ 1

Поскольку обновление прототипа может повредить много вещей в Magento (и, честно говоря, что-то в Magento может повредить много вещей в Magento), я создал тему переопределения для моего

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

и ударил следующее в качестве первого элемента под заголовком:

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

Это говорит IE, чтобы притворяться, будто это IE 8, где это возможно. Это решило проблему, когда, например, вы не могли проверить и завершить процесс оплаты, если у вас включен только один способ оплаты, как в IE 9, все поля будут выделены серым цветом.

Обратите внимание, что это действительно должен быть первый тег под <head>.

Поскольку обновление Magento каким-либо образом может вызвать проблемы, я считаю, что это наименее навязчивый способ решить проблему в ближайшем будущем.

Ответ 3

В качестве быстрого исправления, я думаю, что я буду придерживаться того же подхода, который вы отстаиваете, и обновить Prototype до версии, которая не содержит этой проблемы. Тем не менее, Magento будет поставляться вместе с патчем (это слишком велико, чтобы игнорировать), и в этот момент было бы разумно отменить ваши изменения и применить исправление, которое они предоставляют, чтобы поддерживать соответствие нормальным обновлениям.

Это редко стоит вручную выкопать внутренности Magento JS, так что опция кажется немного от меня. Вероятно, есть несколько мест, где используется эта семантика, и вы можете пропустить некоторые из них.

Надеюсь, что это поможет!

Спасибо, Джозеф Масти

Ответ 4

Я обновил файл prototype.js до 1.7, и пока он исправлен. Я не вижу никаких ошибок. Если вы apdate и находите ошибки, пожалуйста, сообщите об этом!

Ответ 5

Собственное исправление находится в форумах Magento.

В шаблоне /catalog/product/view/tabs.phtml измените строку, которая гласит:

ul.select('li', 'ol').each(function(el){

к

ul.select('li').each(function(el){