Сайты Magento в IE9, ошибки прототипа - PullRequest
13 голосов
/ 15 марта 2011

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

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

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

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

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

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

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

Ответы [ 5 ]

16 голосов
/ 15 марта 2011

Поскольку обновление 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 голос
/ 22 октября 2011

Решено: http://www.alexanderinteractive.com/blog/2011/10/solving-the-ie-7-ie-9-magento-prototype-validation-bug/ Я потратил пару дней на это и обнаружил, что единственное, что действительно работает, - это отключение вещей на уровне формы.Это должно решить все ваши проблемы.

0 голосов
/ 10 октября 2012

Правильное исправление на форумах Magento .

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

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

до

ul.select('li').each(function(el){
0 голосов
/ 19 июня 2012

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

0 голосов
/ 15 марта 2011

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

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

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

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

...