Internet Explorer 8 и W3C-стандарты
Допустим вы создаете какой-то административный интерфейс и перед вами не стоит задача обеспечить работу в Internet Explorer версии 6 и 7. Тогда вы можете себе сильно облегчить задачу, предварительно «научив» IE8 работать по стандартам.
Как это возможно? Да очень просто, в IE8 появилась поддержка prototype для объекта Event, добавлен объект Element, прототип которого так же доступен для модификации, а самое главное, была реализована поддержка одной очень полезной возможности ECMAScript 5 — defineProperty.
Object.defineProperty — это аналог, появившихся в Gecko-браузерах, методов __defineGetter__ и __defineSetter__.
Добавим свойство target для объекта-событие. Для этого нам понадобится реализовать getter, возвращающий свойство srcElement:
Object.defineProperty(Event.prototype, 'target', {
get: function() {
return this.srcElement;
}
});
Теперь можно забыть о том, что для IE ссылку на элемент target нужно получать специальным образом. По такому же принципу легко реализовать, например, часто используемые свойства pageX и pageY.
Чтобы всегда выполнять отмену стандартного действия браузера и останавливать всплывание событий одним W3C-способом, добавми в прототип Event следующие методы:
Event.prototype.preventDefault = function() {
this.returnValue = false;
};
Event.prototype.stopPropagation = function() {
this.cancelBubble = true;
};
А еще в Internet Explorer 8 можно внедрить поддержку Element Traversal.
Важно: прототип объекта Event и метод Object.defineProperty не доступны в QuirksMode.
|
Ага, но только для DOM-объектов и window. Вот, не понятно, вроде MS решают иплементировать стандартное поведение, и снова отклоняются (что за привычка такая, а?). Какой такой сакральный смысл запрещать defineProperty для user-defined-объектов?
Да, жаль, что только для встроенных объектов доступно.
Еще не понятно, почему есть возможность создавать dontEnumerable сеттеры и геттеры, а для свойств и методов такая возможность не предусмотрена.
Roksa szklarska poreba
Roksa małopolska
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.