Остановить событие в IE 9 (без обновления до Prototype 1.7) - PullRequest
1 голос
/ 28 ноября 2011

Сайт, на котором я работаю, использует Prototype 1.6.1. Его Event.stop () не работает в IE9. Я знаю, что Prototype 1.7 решает проблему. Однако можно ли обойтись, если я не смогу перейти на Prototype 1.7?

Мне нужно, чтобы сайт был совместим с IE 7, 8 и 9 (а также с Chrome, Firefox и т. Д.).

Спасибо!

РЕДАКТИРОВАТЬ: я пытался event.preventDefault(), и это не работает для меня в IE 9. Вот пример: http://jsfiddle.net/garthcn/AdR7g/ Работает в jsfiddle / Chrome / Firefox. Если вы вставите код в файл HTML и откроете его с помощью IE9, он не будет работать.

EDIT2: Я только что обнаружил, что Prototype 1.6.1 добавляет свой собственный метод preventDefault() в IE, который не работает в IE 9. Однако IE 9 поставляется с собственным preventDefault(), который на самом деле работает. Так что, если я остановлюсь на Prototype 1.6.1, думаю, я не смогу заставить preventDefault() работать на IE 9.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011
function stopDefAction(evt) {
     evt = evt || event;
     if (evt.preventDefault) {
          evt.preventDefault();
     }
     else {
          evt.returnValue = false;
     }
}
0 голосов
/ 21 июля 2012

Кажется, что внутри Prototype действительно расширяется, что - под IE9 - ломает вещи. Без обновления easy можно добавить метатег, совместимый с x-ua, в верхней части вашего тега head (но ниже тега charset), чтобы IE9 стал IE меньше 9.

Если у вас есть такая возможность, вы также можете попробовать обновить Prototype напрямую: http://mandagreen.com/prototype-1-6-event-stop-ie9-quick-patch/ Это было написано для 1.6.0, но я думаю, что это должно работать для 1.6.1. У меня та же проблема, и я, вероятно, попробую ее, чтобы увидеть, что происходит.

...