Firefox 49

firefox-49

Приятные осенние новшества браузера

HTML

— Поддержка HTML5-элементов DETAILS и SUMMARY, позволяющих создавать разворачиваемые блоки без использования JavaScript.

— Поддержка значений allow-popups-to-escape-sandbox и allow-modals атрибута sandbox элемента IFRAME. Значение allow-popups-to-escape-sandbox разрешает открытие новых окон без применений к ним тех же ограничений, которые имеют место для содержимого фрейма. Значение allow-modals разрешает вставленному во фрейм документу открывать модальные окна.

— Поддержка значений no-referrer-when-downgrade и origin-when-cross-origin атрибута referrerpolicy элементов A (ссылок). Значение no-referrer-when-downgrade означает, что заголовок запроса Referer не будет отправляться при переходе на страницу, открываемую по протоколу, отличному от HTTPS, что соответствует поведению браузеров по умолчанию. Значение origin-when-cross-origin означает, что при переходе на другие сайты заголовок Referer будет содержать только адрес корня домена (протокол, домен и порт), а при переходах между страницами текущего домена Referer будет включать полный адрес страницы.

— Удалена поддержка атрибута form элемента LABEL в соответствии с изменениями в спецификации HTML. DOM-свойство form по-прежнему поддерживается, но теперь является псевдонимом свойства control.form и возвращает форму, к которой относится поле формы, на которое указывает LABEL

CSS

— Долгожданная поддержка свойств background-position-x и background-position-y, позволяющих задавать сдвиг фонового изображения раздельно по горизонтальной и вертикальной осям соответственно. Эти свойства долгое время были нестандартным расширением стандарта, поддерживавшимся в IE и браузерах на основе движков WebKit и Blink, пока в апреле 2014 года рабочей группой CSS наконец не было принято решение об их стандартизации.

— Поддержка значений space и round свойства background-repeat. Значение space позволяет отобразить максимально возможное количество копий изображения без их усечения, при этом крайние копии вплотную прилегают к краям элемента, а свободное пространство равномерно распределяется по промежуткам между копиями изображения. Значение round позволяет замостить элемент отмасштабированными в некоторых пределах копиями изображения без зазоров между ними.

— Включена по умолчанию поддержка значения text свойства background-clip, превращающего текст в маску для фона элемента, ранее экспериментально реализованная в Firefox 48.
Поддержка указания цветовых значений с прозрачностью с помощью шестнадцатеричной нотации вида #RRGGBBAA, #RGBA.

— Функциональный псевдокласс :dir() теперь доступен без префикса. В отличие от селектора по атрибуту [dir=…], псевдокласс учитывает направление текста, унаследованное от одного из элементов-предков, в то время как непосредственно адресуемый элемент может этого атрибута не иметь.

— Поддержка единицы q, эквивалентной четверти миллиметра (mm).
Свойство text-align-last, позволяющее управлять выравниванием последней строки текста, теперь доступно без префикса.

— Поддержка свойства overflow-wrap как стандартного эквивалента нестандартного, но широко поддерживаемого свойства word-wrap, изначально реализованного в браузере Internet Exporer. Последний теперь позиционируется как псевдоним первого.

— Упразднена about:config-настройка layout.css.text-emphasis.enabled, отвечавшая за доступность свойств семейства text-emphasis, включённых по умолчанию начиная с Firefox 46. Таким образом, поддержку этих свойств в Firefox теперь невозможно отключить.

— С целью улучшения совместимости Firefox с сайтами, созданными в расчёте на браузеры на основе WebKit (Safari), добавлена поддержка множества свойств с префиксом -webkit- в качестве псевдонимов соответствующих стандартных свойств. Затронутые свойства в том числе касаются Flexbox, Transitions, трансформаций и градиентов. Кроме того, реализованы некоторые нестандартные возможности, в частности: -webkit-text-stroke (обводка для текста) и -webkit-text-fill-color (аналог свойства color, имеющий более высокий приоритет и изначально предназначенный для использования совместно с -webkit-background-clip с целью обеспечения читабельности текста в браузерах с поддержкой и без поддержки -webkit-background-clip).

JavaScript, DOM

— Удалена поддержка программного интерфейса (API) для доступа к Microdata-данным средствами JavaScript. Из браузерных движков Blink и WebKit такая поддержка была удалена ранее, в Safari данная возможность никогда не была включена по умолчанию, а в IE поддержки не было вовсе. Следует отметить, что использование Microdata-разметки, предназначенной для поисковиков, смысла при этом не теряет.
Удалена поддержка нестандартного и нерекомендуемого параметра flags методов match(), search() и replace объекта String.

— Поведение метода Date.parse() при разборе двузначных лет в датах формата mm/dd/yy было изменено для единообразия с браузерами Chrome (Blink) и Safari (WebKit) несмотря на то, что в IE и Edge разбор работает аналогично прежнему алгоритму Firefox.

— Поддержка метода DOMTokenList.supports(), призванного дать возможность определения легитимности заданной подстроки как одного из значений в рамках заданного атрибута.

— Поддержка метода DOMTokenList.replace(), предназначенного для замены одного значения списка DOMTokenList на другое.

— Ведущий вопросительный знак в значении параметра конструктора URLSearchParams() теперь игнорируется в соответствии с изменением в спецификации URL.

— Свойство Document.visibilityState теперь возвращает значение prerender, если страница находится в состоянии предварительной отрисовки и ещё не видна пользователю.
Реализованы DOM4-методы before(), after() и replaceWith() дочернего узла и append() и prepend() родительского узла, призванные упростить на уровне синтаксиса вставку узлов до или после заданного узла, замену заданного узла, вставку узлов перед существующими дочерними узлами заданного элемента или после них соответственно.

— В окнах, открываемых с помощью метода window.open(), теперь по умолчанию доступны полосы прокрутки.
Экспериментальная поддержка нестандартного метода HTMLMediaElement.seekToNextFrame() для сдвига текущей позиции воспроизведения медиафайла на один кадр вперёд. Для аудиофайлов в качестве кадра, вероятно, выступает отдельный отсчёт (sample) дискретизации. По умолчанию возможность отключена, включается about:config-параметром media.seekToNextFrame.enabled.

— Поддержка передачи сразу нескольких параметров как объекта в качестве третьего аргумента метода addEventListener(), а именно:

— параметр с ключом capture соответствует прежнему назначению (useCapture) третьего параметра метода;

— параметр once позволяет автоматически удалить обработчик после его первого вызова;
passive сообщает браузеру, что в функции обратного вызова не будет вызова метода preventDefault() (если такой вызов всё-таки будет, он будет проигнорирован), что может положительно сказаться на быстродействии, в частности, в обработчиках события прокрутки.
Следует учитывать, что браузеры без поддержки такой возможности будут трактовать такой объект как аргумент useCapture со значением true.

— Включена по умолчанию поддержка свойства CanvasRenderingContext2D.filter, позволяющего задать ряд фильтров, которыми следует обрабатывать изображение, генерируемое в рамках соответствующего элемента CANVAS — например, blur() (размытие), brightness() и contrast() (изменение яркости и контрастности), grayscale() (управление насыщенностью цветов — от цветного до чёрно-белого).

— Для объекта Response, определённого в Fetch API, теперь доступно свойство redirected, по которому можно определить, было ли осуществлено перенаправление (редирект) соответствующего запроса.
Исправлена ошибка, из-за которой вызов MediaDevices.getUserMedia(), запрашивающий доступ одновременно к микрофону и видеокамере, когда на самом деле у пользователя было лишь одно из этих устройств, либо когда доступ к одному из этих устройств был явным образом запрещён пользователем.

— При использовании методов DataTransfer.setData() и DataTransfer.getData() теперь можно гибко управлять MIME-типом хранимых в буфере обмена данных. Ранее при вызове getData() был доступен лишь строго определённый набор разрешённых MIME-типов.

— Поддержка синтеза речи в версиях Firefox для настольных компьютеров в рамках программного интерфейса (API) Web Speech.

— Дальнейшее расширение поддержки WebExtensions API — нового способа создания расширений, основанного на веб-технологиях HTML/CSS/JS и частично совместимого с аналогичными возможностями других браузеров:

управление историей посещений (history): поиск по истории, получение информации о ранее посещённых страницах, а также добавление и удаление записей из истории посещений;
метод tabs.removeCSS() позволяет удалять стили, ранее добавленные с помощью метода tabs.insertCSS().

Источник: http://tanalin.com/blog/2016/09/firefox-49/