Про Microsoft, IE 11 и Pointer events
Все известно, что в какой-то определенный момент гигант продаж кривых операционных систем решил сделать общую Windows для компьютеров и мобильных устройств.
Окей, идея не нова, майкрософт богата – должно что-нибудь получиться. Да и разрабатывать должно стать как бы легче. Но...
Вот с майкрософт всегда есть какие-то «но». Вместо того, чтобы взять чужие наработки, общепринятые стандарты и иже с ними, решили изобрести велосипед и добавили префикс MS
к Pointer Events
. Все смирились и в коде появились вот такие строки:
$('.selector').on('MSPointerDown', function () {
//...
});
$('.selector').on('MSPointerMove', function () {
//...
});
$('.selector').on('MSPointerUp', function () {
//...
});
И снова НО. В своем последнем браузере, в одной из последних версий, майкрософт без всяких предупреждений просто взяли и выкинули поддержку своего собственного молодого стандарта. Все то, что написано выше перестало работать.
А все вот почему, в корпорации решили, что префикс MS
и camelCase никому не нужны, плюнув на обратную совместимость. Нынче делать надо так.
$('.selector').on('pointerdown', function () {
//...
});
$('.selector').on('pointermove', function () {
//...
});
$('.selector').on('pointerup', function () {
//...
});
Теперь самое интересное. Если вы не используете какие-либо библиотеки, то:
document.querySelector('.selector').addEventListener('MSPointerDown', function() {
//...
}, false);
работать будет! Вопрос: ПОЧЕМУ и ЗАЧЕМ?
Немного полезного. Определить одно или другое можно вот таким нехитрым образом:
var supports = (function() {
return {
msPointerEvents: window.navigator.msPointerEnabled || false,
pointerEvents: window.navigator.pointerEnabled || false
};
})();