Поиск по метке: IE
Об IE9 замолвите слово
Минутка гнева… Internet Explorer 9 не умеет:
- Placeholder-ы
- FormData, FileReader, Blob, Uint8Array
- Flexbox
Помимо этого обладает ужаасным набором инструментов, постоянно дохнет и очень медленно работает. В общем, этот браузер не так уж и далеко ушёл от своего 8-го собрата.
IE8 и babel
В одном из проектов требуется на уровне ТЗ поддержка Internet Explorer 8. Спасибо, что не 7 :) Дошли руки до перевода кодовой базы на es6. Воткнул как обычно preset es2015, потестил, вроде всё работает, но дёрнул меня чёрт проверить и в старом ослике. Подохло там всё. Причём глюк настолько странный, что я невольно задвигал бровями. Перейду сразу к сути:
function init(){ console.log(1); }
var a = { init: function(){ console.log(2); } };
init();
Результат, конечно же, 1. Однако babel превратит сий код в:
"use strict";
function init() {
console.log(1);
}
var a = { init: function init() {
console.log(2);
} };
init();
Ключевое отличие ― именование метода. Теперь он тоже init. Зачем? Не ко мне вопрос. Может быть для упрощения отладки. Но с этого момента старый ишак возвращает 2. Оказывается это старый баг тогдашнего jscript-а.
Лечение: добавляем: plugins: ["transform-jscript"] к настройкам babel-я. Ну и соответственно тащим этот плагин. С этого момента babel будет генерировать вот таких вот монстров:
"use strict";
function init() {
console.log(1);
}
var a = { init: function() {
function init(){ console.log(2); }
init();
} };
init();
Очень бредово, если честно. Ведь можно было сохранить изначальный код в первозданном виде.
IE7-8, jQuery и XFBML
Столкнулся с тем, что jQuery не умеет создавать DOM-элементы с составными именами, вроде <fb:like> в старых версиях IE. Решение - document.createElement( '<fb:like>' ). Пусть вас не смущает, что elem.tagName === 'like', на самом деле он нормальный.
Мне все эти шаманства понадобились для динамического встраивания соц. кнопок "мне нравится" и таких же лент комментариев. Посему поделюсь некоторым опытом. Для того. чтобы в нужный момент заставить браузер подготовить плагин к использованию, нужно заранее загрузить все необходимые скрипты а после выполнить:
- Для mail.ru и одноклассников - mailru.loader.require( 'api', function(){ mailru.plugin.init(); } );
- Для vKontakte - VK.Widgets.НужныйВиджет( id_dom_элемента, { настройки плагина } )
- Для Twitter - twttr.widgets.load();
- Для Google+ - gapi.plusone.render( id_dom_элемента );
- Для Facebook - FB.XFBML.parse();
При этом для facebook-а и g+ обязательно нужно задать все <meta property="og:*" content="..." /> теги и дополнительные аттрибуты к тегу <html>:
- xmlns:fb="http://www.facebook.com/2008/fbml"
- xmlns:og="http://ogp.me/ns#"
- itemscope="itemscope"
- itemtype="http://schema.org/Product"