Firefox 68 for developers - Mozilla

Firefox 68 for developers
=========================

Эта статья содержит информацию об изменениях в Firefox 68, которые касаются разработчиков. Firefox 68 был выпущен 9 июля 2019.

Изменения для веб разработчиков
-------------------------------

### Инструменты разработчика

#### Браузер/веб консоль

* Веб консоль теперь предоставляет больше информации о CSS предупреждениях (en-US), включая древо DOM-элементов, которые используют CSS-правило (Firefox bug 1093953).
* Теперь вы можете фильтровать контент Веб консоли, пользуясь регулярными выражениями (Firefox bug 1441079).
* The Browser console now allows you to show or hide messages from the content process by setting or clearing the checkbox labeled *Show Content Messages* (Firefox bug 1260877).

#### JavaScript дебаггер

* Теперь вы можете осуществлять Поиск (en-US) по всем файлам проекта с помощью дебаггера, нажав
 `Shift`
 +
 `Ctrl`
 +
 `F`
 (Windows or Linux) или
 `Shift`
 +
 `Cmd`
 +
 `F`
 (macOS) (Firefox bug 1320325).

#### Сетевой монитор

* В списке запросов (en-US) Сетевой монитора теперь можно блокировать определённые URL (Firefox bug 1151368).
* Теперь вы можете повторно отправить запрос без редактирования метода, URL, параметров и заголовков, используя команду Переотправить (en-US) в контекстном меню (Firefox bug 1422014).
* Контекстное меню Сетевого монитора, вкладка Заголовки (en-US), теперь позволяет вам скопировать всю или же некоторую информацию о заголовках в формате JSON (Firefox bug 1442249).

#### Инспектор страниц

* На панель со стилями в Инспекторе страниц, была добавлена кнопка, позволяющая переключиться в режим симуляции печати (Firefox bug 1534984).
* Панель со шрифтами теперь имеет ползунок для изменения `letter-spacing` (Firefox bug 1536237).
* Значок предупреждения появляется рядом с неподдерживаемыми CSS правилами или правилами, которые имеют некорректные значения, для того, чтобы помочь вам понять, почему некоторые стили не были применены (Firefox bug 1306054).

#### Инспектор хранилища

* Теперь вы можете удалять локальные или сессионные записи в хранилище, выбрав строку в инспекторе хранилища и нажав кнопку backspace (Firefox bug 1522893).

#### Прочее

* Инспектор поддержки доступности теперь имеет функцию *Проверить на ошибки*, которая включает в себя число инструментов аудита, чтобы выявить проблемы с доступностью на ваших веб-страницах. Первая доступная проверка — *контраст*, позволяющая выявить проблемы с цветовым контрастом.
* Надстройка контроля видимости внутренних расширений (системных дополнений и скрытых) на странице about:debugging была изменена с `devtools.aboutdebugging.showSystemAddons` на `devtools.aboutdebugging.showHiddenAddons` (Firefox bug 1544372).
* Режим адаптивного дизайна был переработан — окошко *Параметры устройства* (меню выбора устройства > *Изменить список...*) теперь более интуитивное и стало проще в использовании (Firefox bug 1487857).

#### Удалённые

* Флажок "Включить дополнение при отладке" был удалён со страницы about:debugging (Firefox bug 1544813).
### HTML

* Элемент `<track>` — предоставленный `HTMLTrackElement` — теперь получает `cuechange` (en-US) событие в дополнение к `TextTrack` (en-US), если текст трека содержится в медиа элементе (Firefox bug 1548731).
* `<link>` элементы снова поддерживают атрибут `disabled`, с другим поведением. Когда `disabled` установлен на элементе `<link>` вместе с `rel="stylesheet"`, то стили не загружаются во время загрузки страницы, будут загружены лишь тогда, когда атрибут `disabled` будет изменён на `false`, либо удалён (Firefox bug 1281135).

#### Удалённые

* `<meta http-equiv="set-cookie">` больше не поддерживается (Firefox bug 1457503).
### CSS

* CSS Scroll Snapping (en-US) был обновлён до последней версии спецификации (Firefox bug 1312163) и (Firefox bug 1544136):
    + Свойство `scroll-padding` (Firefox bug 1373832)
    + Свойство `scroll-margin` (Firefox bug 1373833)
    + `scroll-snap-align` (en-US) (Firefox bug 1373835)
* Свойство `-webkit-line-clamp` (en-US) было добавлено для обратной совместимости с другими браузерами (Firefox bug 866102).
* Для псевдо-элементов была добавлена поддержка `::marker` (Firefox bug 205202) и псевдо `::marker` для анимации (Firefox bug 1538618)
* Мы изменили `<currentColor>` (en-US) на вычисляемое значение (кроме свойства `color` (en-US)) (Firefox bug 760345).
* Support has been fixed for the `ch` length unit so it now matches the spec (fallback for no '0' glyph, vertical metrics) (Firefox bug 282126)
* Свойство `counter-set` (en-US) реализовано. (Firefox bug 1518201).
* Мы реализовали нумерацию списков, используя встроенный счётчик "list-item"; это исправило баги с нумерацией списков (Firefox bug 288704).
* Selector matching and parsing support has been implemented for `::part()` (en-US) (Firefox bug 1545430) and (Firefox bug 1545425).
* CSS Transforms теперь поддерживаются в косвенно рендерящихся вещах e.g.) `<mask>` (en-US), `<marker>` (en-US), `<pattern>`, `<clipPath>` (en-US) (Firefox bug 1323962).
* While we're keeping the prefixed versions of the various gradient properties (`linear-gradient()` (en-US), `radial-gradient()` (en-US), and `repeating-radial-gradient()` (en-US) available for compatibility reasons, we have revised how they're parsed so that they're handled much more like the non-prefixed versions. This means that certain existing styles won't work correctly.
 In particular, the complicated syntax taking both an angle and a position will no longer work, and the `to` keyword in the `<side-or-corner>` parameter is not required for the prefixed gradient properties. You are encouraged to use the standard, non-prefixed gradient properties instead, as they're now widely supported (Firefox bug 1547939).

#### Удалённые

* `scroll-snap-coordinate`, `scroll-snap-destination`, `scroll-snap-type-x` и `scroll-snap-type-y` были удалены.
* Свойство `scroll-snap-type` стало лонгхэнд, старый шортханд синтаксис `scroll-snap-type:mandatory` больше не работает.
### SVG

*Без изменений.*

### JavaScript

* Новый примитив `BigInt` теперь включён по умолчанию (Firefox bug 1527902).
### APIs

#### Объектная модель CSS (CSSOM)

* Наследие свойств `rules` (en-US), `addRule()` (en-US) и `removeRule()` (en-US) методов было добавлено в интерфейс `CSSStyleSheet`. Это было введено в Internet Explorer 9 и никогда полностью не искоренялось, они добавили это для улучшения обратной совместимости с небольшим процентом сайтов, которые всё ещё пользовались этим (Firefox bug 1545823).

#### DOM

* Visual Viewport API (en-US) было включено по умолчанию на Android (Firefox bug 1512813). Добавление API для настольной версии Firefox теперь отслеживается в Firefox bug 1551302.
* Возможность `Window` `noreferrer` (en-US) теперь поддерживается; если указана, то новый контент окон будет загружен без передачи имени хоста, IP адреса, URL и прочей идентифицирующей устройство информации (Firefox bug 1527287).
* Метод `decode()` (en-US) на `HTMLImageElement` реализован. Это может быть использовано для запуска загрузки и декодирования изображения до добавления его в DOM (Firefox bug 1501794).
* `XMLHttpRequest` был обновлён и больше не принимает нестандартное значение `moz-chunked-arraybuffer` для `responseType`. Код, использующий это, должен быть обновлён, чтобы использовать Fetch API как поток (en-US) (Firefox bug 1120171).
* `XMLHttpRequest` теперь выводит предупреждения в консоль, если выполняется синхронный запрос во время обработки `unload`, `beforeunload`, `pagehide` (Firefox bug 980902).
* Свойство `cookie` было перенесено из интерфейса `HTMLDocument` в `Document`, позволяя документам отличным от HTML использовать куки (Firefox bug 144795).
* Методы `HTMLElement.focus()` (en-US) и `SVGElement.focus()` теперь принимают необязательный объект, который может содержать булеву опцию `preventScroll`, определяющую: должна или не должна происходить блокировка браузером прокрутки элемента с фокусом в поле зрения (Firefox bug 1374045).

#### События DOM

* Firefox для Android больше не отправляет неправильное событие `resize`, пока не будет отрисован первый фрейм; это улучшит совместимость с сайтами, которые не ожидают, что это событие произойдёт (Firefox bug 1528052).
* Рассылка событий для неосновных кнопок мыши было изменено ближе к спецификации; Событие `click` больше не вызывается, когда неосновные кнопки мыши были нажат, в отличие от события `auxclick` (en-US). В дополнение, `dblclick` (en-US) больше на срабатывает для неосновных кнопок мыши (Firefox bug 1379466).
* Собственное свойство `MouseEvent.mozPressure` объявлено устаревшим и теперь при вызове сопровождается предупреждением в консоли (Firefox bug 1165211).

#### Медиа, Веб-аудио и WebRTC

* WebRTC был обновлён и распознаёт `null`, отправленное в обработчик события `icecandidate` (en-US), сообщая о получении, вместо того, чтобы никак не реагировать на это; когда это происходит, ICE состояние (`iceGatheringState` (en-US)) становится `complete` (Firefox bug 1318167).
* Методы `RTCRtpReceiver` (en-US),`getContributingSources()` (en-US) и `getSynchronizationSources()` (en-US) теперь поддерживают видеодорожки; ранее они работали только с audio (Firefox bug 1534466).
* Web Audio API интерфейс `MediaStreamTrackAudioSourceNode` (en-US) теперь поддерживается, как метод `AudioContext.createMediaStreamTrackSource()` (en-US) (Firefox bug 1324548).
* `RTCDataChannel.negotiated` (en-US) теперь реализован (Firefox bug 1529695).
* Конструктор `MediaStreamAudioSourceNode()` (en-US) был обновлён в соответствии со спецификацией, где "first audio track" в потоке дорожка, идентификатора которой приходит первым в лексикографическом порядке (Firefox bug 1324548).
* `getUserMedia()` больше не может быть использован из небезопасного контекста; попытки сделать это будут сопровождаться исключением `NotAllowedError`. Безопасными контекстами считаются те, которые загруженные через HTTPS, либо которые использую схему `file:///`, либо загружены из `localhost`. Сейчас, если необходимо, вы можете включить возможность совершать небезопасные вызовы `getUserMedia()`, установив надстройку `media.getusermedia.insecure.enabled` в состояние `true` (Firefox bug 1335740).

**Примечание:** В будущем, Firefox также удалит свойство `navigator.mediaDevices` на незащищённых контекстах, предотвратив доступ к `MediaDevices` API. **Это уже так в Nightly сборках.**

#### Удалённые

* Удалён нестандартный метод `XMLDocument.load()` (en-US) (Firefox bug 332175).
* Удалён нестандартное свойство `XMLDocument.async` (Firefox bug 1328138).
* Значение `RTCIceCredentialType` (en-US) `token` было удалено (Firefox bug 1529595).
### HTTP

* HTTP заголовок `Clear-Site-Data` (en-US) больше не поддерживает директиву `executionContexts`. This was removed due to problems with interactions between interconnections among different kinds of data at different points in the navigation process and the way the specification is designed. Было предложено этой директивы из спецификации из-за вышеуказанных причин, включая эту (Firefox bug 1548034).

#### Удалённые

* Директива `Content-Security-Policy` (en-US) `require-sri-for` больше не поддерживается из-за её неоднозначного статуса в спецификации. Ранее она была добавлена лишь в качестве надстройки, отключённой по умолчанию (Firefox bug 1386214).
### Безопасность

* Из-за изменений вследствие CVE-2019-11730: Same-origin policy treats all files in a directory as having the same-origin, Firefox теперь обращается к файлам в одной и той же директории так, будто бы они из разных папок. Это спровоцировало некоторые побочные эффекты с файлами вида file:// (смотрите Firefox bug file-fallout). Например, workers больше не могут быть загружены.
### Соответствия WebDriver (Marionette)

#### Исправления багов

* If `WebDriver:SwitchToWindow` changes the selection to a different window it now waits for its `focus` and `activate` events before returning (Firefox bug 1335085).
* Исправлена ошибка `TypeError: this.tabModal is null`, которая иногда появлялась при взаимодействии с модальным окном или пользовательскими подсказками (Firefox bug 1538782)

#### Прочее

* Отключена функция принудительной выгрузки вкладок при нехватки памяти, для предотвращения магических исчезновений top-level контекстов браузера (Firefox bug 1553748).
* Disabled priviledged content processes that caused HTTP authentication dialogs not to appear when navigating to a website after opening a new tab (Firefox bug 1558763).
### Плагины

*Без изменений.*

Изменения для разработчиков дополнений
--------------------------------------

### Изменения API

* Функции proxy.register() (en-US) и proxy.unregister() (en-US) объявлены устаревшими и будут удалены в Firefox 71 (Firefox bug 1545811).
* Сообщения об ошибке, когда дополнение пытается добавить папку с закладками в основную папку, теперь более интуитивно понятное (Firefox bug 1512171).
* Promise, возвращённый `browser.tabs.duplicate()` (en-US), выполняется сразу, пока вкладки не загружены полностью, для повышения производительности (Firefox bug 1394376).
* Была добавлена поддержка chrome.storage.managed, позволяющая настройкам быть реализованным через корпоративную политику (Firefox bug 1230802).
* Появилась опция Групповой Политики, позволяющая добавить все расширения в чёрный список, за исключением тех, что внесены в белый, (Firefox bug 1522823).
### Изменения манифеста

*Без изменений.*

Предыдущие версии
-----------------

* Firefox 67 для разработчиков (en-US)
* Firefox 66 для разработчиков (en-US)
* Firefox 65 для разработчиков
* Firefox 64 для разработчиков
* Firefox 63 для разработчиков
* Firefox 62 для разработчиков
* Firefox 61 для разработчиков (en-US)
* Firefox 60 для разработчиков (en-US)
* Firefox 59 для разработчиков (en-US)
* Firefox 58 для разработчиков (en-US)
* Firefox 57 для разработчиков (en-US)
* Firefox 56 для разработчиков (en-US)
* Firefox 55 для разработчиков (en-US)
* Firefox 54 для разработчиков (en-US)
* Firefox 53 для разработчиков
* Firefox 52 для разработчиков (en-US)
* Firefox 51 для разработчиков (en-US)
* Firefox 50 для разработчиков (en-US)
* Firefox 49 для разработчиков (en-US)
* Firefox 48 для разработчиков (en-US)
* Firefox 47 для разработчиков (en-US)
* Firefox 46 для разработчиков (en-US)
* Firefox 45 для разработчиков (en-US)
* Firefox 44 для разработчиков (en-US)
* Firefox 43 для разработчиков
* Firefox 42 для разработчиков (en-US)
* Firefox 41 для разработчиков (en-US)
* Firefox 40 для разработчиков (en-US)
* Firefox 39 для разработчиков (en-US)
* Firefox 38 для разработчиков (en-US)
* Firefox 37 для разработчиков (en-US)


Firefox 33 для разработчиков - Mozilla

Firefox 33 для разработчиков
============================

Хотите помочь с документацией к Firefox 33? Взгляните на список багов нуждающихся в описании и помогите нам!Список изменения для веб - разработки
-------------------------------------

### Инструменты разработчика

*Нет изменений.*

### CSS

* Реализовано **@counter-style** правило(Firefox bug 966166).
* Больше нет необходимости использовать префикс **-moz-ethiopic-numeric**(Firefox bug 985825).
* Добавлена поддержка **disclosure-open/disclosure-closed** стилей счётчиков(Firefox bug 982355).
* CSS-анимация с пустыми keyframes свойствами обрабатывает события по умолчанию(Firefox bug 1004377).
### HTML

*Нет изменений.*

### JavaScript

* Удалён нестандартный метод `Number.toInteger()` (Firefox bug 1022396).
* Методы `Map.prototype.set()` (en-US), `WeakMap.prototype.set()` and `Set.prototype.add()` можно использовать последовательно, больше не возвращают `undefined` в место этого возвращают объект. (Firefox bug 1031632).
* Добавлена поддержка типа данных "Symbol" из стандарта ECMAScript 6 (Firefox bug 645416):
    + `Symbol`
    + `Symbol.for()`
    + `Symbol.keyFor()`
    + `Object.getOwnPropertySymbols()`
* Параметры по умолчанию инициализированные до инициализации функции или в теле функции не могут быть использованы в качестве параметров по умолчанию (Firefox bug 1022962).
### Interfaces/APIs/DOM

*Нет изменений.*

### MathML

* Используются Open Type MATH для задания констант fractions, stacks, radicals и скриптов (Firefox bug 961365).
### SVG

*Нет изменений.*

### Audio/Video

*Нет изменений.*

Безопасность
------------

*Нет изменений.*

Изменения для плагинов и методов их разработки
----------------------------------------------

*Нет изменений.*

Смотрите также
--------------

* Совместимость сайтов для Firefox 33
### Предыдущие версии

* Firefox 32 для разработчиков
* Firefox 31 для разработчиков
* Firefox 30 для разработчиков (en-US)
* Firefox 29 для разработчиков
* Firefox 28 для разработчиков
* Firefox 27 для разработчиков (en-US)
* Firefox 26 для разработчиков (en-US)
* Firefox 25 для разработчиков (en-US)
* Firefox 24 для разработчиков (en-US)
* Firefox 23 для разработчиков (en-US)
* Firefox 22 для разработчиков (en-US)
* Firefox 21 для разработчиков (en-US)
* Firefox 20 для разработчиков (en-US)
* Firefox 19 для разработчиков (en-US)
* Firefox 18 для разработчиков (en-US)
* Firefox 17 для разработчиков (en-US)
* Firefox 16 для разработчиков (en-US)
* Firefox 15 для разработчиков (en-US)
* Firefox 14 для разработчиков (en-US)
* Firefox 13 для разработчиков (en-US)
* Firefox 12 для разработчиков (en-US)
* Firefox 11 для разработчиков (en-US)
* Firefox 10 для разработчиков (en-US)
* Firefox 9 для разработчиков (en-US)
* Firefox 8 для разработчиков (en-US)
* Firefox 7 для разработчиков (en-US)
* Firefox 6 для разработчиков (en-US)
* Firefox 5 для разработчиков (en-US)
* Firefox 4 для разработчиков (en-US)
* Firefox 3.6 для разработчиков (en-US)
* Firefox 3.5 для разработчиков
* Firefox 3 для разработчиков
* Firefox 2 для разработчиков (en-US)
* Firefox 1.5 для разработчиков (en-US)


Firefox 64 для разработчиков - Mozilla

Firefox 64 для разработчиков
============================

В этой статье перечислены ключевые изменения, которые касаются разработчиков. Firefox 64 был выпущен 11 декабря 2018 года.

Изменения для веб-разработчиков
-------------------------------

### Инструменты разработчика

* Информационная панель в инструменте поддержки доступности теперь показывает сведения о соотношении контрастности цветов текста или изображений на странице (Firefox bug 1473037).
* Выбор устройства в режиме адаптивного дизайна запоминается и сохраняется между сеансами (Firefox bug 1248619).
* Сетевой монитор теперь выделяет ресурсы, на которые потенциально может повлиять защита от отслеживания (en-US) (Firefox bug 1333994).
* Веб-консоль получила усовершенствования, связанные с вводом и оценкой кода:
    + Регистронезависимое автодополнение (en-US) выражений (Firefox bug 672733).
    + Возможность просмотреть историю выражений консоли (en-US) с помощью bash-подобного обратного поиска (Firefox bug 1024913).
    + Подсветка оценённого кода (en-US) и при вводе, и при выводе (Firefox bug 1463669).
* Пошаговое выполнение кода в отладчике JavaScript также было улучшено:
    + Отладчик сохраняет развёрнутые переменные (en-US) при пошаговом выполнении кода (Firefox bug 1491471).
    + Выход из функции (en-US) пропускает возвращаемое значение (Firefox bug 923975).

#### Удалено

* Окончательно удалена панель разработчика (GCLI) (Firefox bug 1429421). Её интерфейс был удалён в Firefox 62, а теперь удалён и оставшийся код.
### HTML

*Без изменений.*

### CSS

* Включена по умолчанию поддержка полос прокрутки CSS (en-US) (Firefox bug 1492012).
* Реализована поддержка Interaction Media Features, включающая `pointer:coarse` (en-US) (Firefox bug 1035774). Подробности реализации `any-pointer` (en-US) и `any-hover` (en-US) см в Firefox bug 1483111.
* Android-версия обзавелась поддержкой `prefers-reduced-motion` (Firefox bug 1478505).
* Значения `<gradient>` (en-US) теперь поддерживают мультипозиционный синтаксис остановки цвета, например, `yellow 25%, yellow 50%` можно записать в виде `yellow 25% 50%` (Firefox bug 1352643).
* Свойство `text-transform` (en-US) теперь принимает значение `full-size-kana` (Firefox bug 1498148).
* Из-за проблем веб-совместимости добавлена поддержка `-webkit-appearance` (Firefox bug 1368555).
* Кроме того, удалена большая часть специфичных для Firefox значений `-moz-appearance` (Firefox bug 1496720).
* `display`: `list-item` отныне поддерживается на элементах `<legend>` (Firefox bug 1486602).
* SVG `path()`, при использовании в `offset-path` (en-US), теперь могут быть анимированными (Firefox bug 1486094).
* Псевдоэлементы с префиксом `-webkit-` больше не делают цепочку или группу селекторов недействительной (Firefox bug 1424106). См. Firefox bug 1486325, чтобы узнать, как включить эту возможность.

#### Удалено

* Нестандартные значения `-moz-box` и `-moz-inline-box` `display` скрыты от веб-содержимого (Firefox bug 1496961).
* Нестандартные псевдоэлементы `::-moz-tree` скрыты от веб-содержимого (Firefox bug 1496961).
* Удалена настройка `layout.css.filters.enabled`; CSS-фильтры (en-US) отныне нельзя отключить (Firefox bug 1408841).
* Отменено (Firefox bug 1492567) изменение, сделанное в прошлом выпуске — перемена мест значений `overflow` (Firefox bug 1481866). См. причину.
### SVG

*Без изменений.*

### JavaScript

* Реализовано предложение TC39 Well-formed JSON.stringify, чтобы `JSON.stringify` не мог возвращать плохо сформированные строки Unicode (Firefox bug 1469021).
* Проксируемые функции теперь могут быть переданы `Function.prototype.toString``.call()` (Firefox bug 1440468).
* Если значение не указано, конструктор `WebAssembly.Global` (en-US) будет использовать типизированный 0. Это определяется алгоритмом `DefaultValue` (Firefox bug 1490286).
### API

#### DOM

* Ряд изменений API Fullscreen (en-US):
    + API лишился префикса (Firefox bug 1269276).
    + Методы `Element.requestFullscreen()` (en-US) и `Document.exitFullscreen()` (en-US) отныне возвращают `Promise`, который исполняется, когда завершено изменение режима (Firefox bug 1188256 и Firefox bug 1491212).
    + События `fullscreenchange` и `fullscreenerror` сначала отправлялись в `Document`, а затем в `Element`. Теперь всё стало наоборот. Это поведение отражено в спецификации и совпадает с поведением Chrome (Firefox bug 1375319).
* На платформе macOS снова включён API WebVR 1.1 (Firefox bug 1476091).
* В качестве ссылок на `Window.screenX` и `Window.screenY` (en-US) добавлены `Window.screenLeft` (en-US) и `Window.screenTop` (en-US) (Firefox bug 1498860).
* Метод `XMLHttpRequest.getAllResponseHeaders()` (en-US) отныне возвращает имена заголовков в нижнем регистре, в соответствии со спецификацией (Firefox bug 1398718).
* Устаревший интерфейс `HTMLAllCollection` обновлён в соответствии с последними изменениями спецификации (Firefox bug 1398354).
* В целях конфиденциальности `Navigator.buildID` (en-US) будет возвращать фиксированную метку времени (Firefox bug 583181).
* По умолчанию отключены следующие возможности `Document.execCommand()` (Firefox bug 1490641):
    + `enableObjectResizing`
    + `enableInlineTableEditing`
    + `enableAbsolutePositionEditor`

#### Сервис-воркеры

* Реализован метод `ServiceWorkerContainer.startMessages()` (en-US) (Firefox bug 1263734).

#### Media, Web Audio и WebRTC

* Свойства `PannerNode.refDistance` (en-US), `PannerNode.maxDistance` (en-US), `PannerNode.rolloffFactor` (en-US) и `PannerNode.coneOuterGain` (en-US) отныне корректно выбрасывают исключения, когда их значения установлены за пределами допустимого (Firefox bug 1487963).
* Настройки `RTCRtpEncodingParameters` (en-US), изменённые с помощью `RTCRtpSender.setParameters()` (en-US), не обновлялись, если были изменены во время звонка. Теперь они будут обновляться без переподключения (Firefox bug 1253499).
* Реализован `RTCIceCandidateStats.relayProtocol` (en-US) — стандартная версия `RTCIceCandidateStats.mozLocalTransport` (en-US), который объявлен устаревшим (Firefox bug 1435789).
* Включена по умолчанию автоматическая регулировка усиления (AGC). Эта возможность управляется настройкой `media.getusermedia.agc_enabled` (Firefox bug 1496714).

#### Удалено

* Свойство `Window.event` (en-US), добавленное в Firefox 63 для разрешения проблем веб-совместимости, скрыто за отключённой в релизных версиях настройкой `dom.window.event.enabled`, поскольку вскрылись иные затруднения (Firefox bug 1493869). На самом деле, это было сделано в одном из минорных обновлений Firefox 63, мы просто обращаем на это ваше внимание.
* Удалён интерфейс `LocalMediaStream` и его метод `stop()` (Firefox bug 1258143). См. Stopping a video stream (en-US), чтобы узнать, как остановить поток целиком.
* Удалены интерфейсы `AudioStreamTrack` и `VideoStreamTrack`, поскольку они уже некоторое время объявлены устаревшими (Firefox bug 1377146). Их функции перенесены в `MediaStreamTrack`; дорожки отныне идентифицируются по значению свойств `kind` (en-US), таких, как `audio` или `video`.
### Безопасность

* Прекращено доверие сертификатам, выданным удостоверяющими центрами Symantec (см. Firefox bug 1409257; также см. подробности в обсуждении Mozilla's Plan for Symantec Roots).
* Теперь можно использовать `Referrer-Policy` (en-US) для управления ресурсами, полученными через таблицы стилей (Firefox bug 1330487) — см. Integration with CSS (en-US) для получения подробных сведений.
### Плагины

*Без изменений.*

### WebDriver (Marionette)

#### Изменения API

* Удалены устаревшие конечные точки без префикса `Marionette:`, `L10n:` или `Addon:` (включая `singeTap`) (Firefox bug 1504478, Firefox bug 1504940).

#### Исправленные ошибки

* Синтезированные события `Shift` с использованием `WebDriver:PerformActions` не создавали заглавные буквы (Firefox bug 1405370).
* `WebDriver:Navigate` мог вызвать бесконечное зависание, если низлежащий процесс контента вкладки менялся много раз во время навигации (Firefox bug 1504807).
* Для улучшения производительности и сокращения количества потребляемой памяти страница, в новой вкладке или окне будет загружаться не `about:newtab`, а `about:blank` (Firefox bug 1506643).
* Отключено по умолчанию предложение использовать панель блокировки контента, показ которого препятствует взаимодействию с элементами интерфейса (Firefox bug 1488826).
Изменения для разработчиков дополнений
--------------------------------------

### Изменения API

#### Меню

* Добавлен новый API `browser.menus.overrideContext()`, который может быть вызван из события DOM `contextmenu` и позволяет скрыть все пункты меню по умолчанию, чтобы создать собственное контекстное меню на страницах, относящихся к дополнению. Это контекстное меню может состоять из нескольких пунктов меню верхнего уровня дополнения и может включать элементы контекстного меню вкладок или закладок из других дополнений. См. блог для получения подробных сведений.
    + Реализован `browser.menus.overrideContext()` ((Firefox bug 1280347).
    + Реализована опция `showDefaults: false`, позволяющая скрывать из контекстного меню пункты по умолчанию (Firefox bug 1367160).
    + `documentURLPatterns` теперь может соответствовать адресу `moz-extension://`, даже если используется `browser.menus.overrideContext()`. Таким образом, он может надёжно ограничивать пользовательские пункты меню для определённых документов (Firefox bug 1498896).
* С помощью нового свойства `viewTypes` в `menus.create()` (en-US) и `menus.update()` (en-US) можно ограничить места появления контекстного меню в дополнении (Firefox bug 1416839).
* `menus.update()` (en-US) теперь позволяет обновить значок существующего пункта меню (Firefox bug 1414566).
* С помощью нового свойства `button` `menus.OnClickData` (en-US) дополнения могут определять, какая кнопка мыши использована для выбора пункта меню (Firefox bug 1469148).

#### Окна

* Метод `windows.create()` (en-US) обзавёлся опцией `cookieStoreId`, которая определяет `CookieStoreId` для всех вкладок, созданных при открытии окна (Firefox bug 1393570).

#### Конфиденциальность

* Свойство `cookieConfig` `privacy.websites` (en-US) — это объект, который может принимать свойство `behavior`. Это свойство теперь может, в свою очередь, принимать новое значение — `reject_trackers`, которое указывает дополнению отвергать куки, связанными с отслеживанием (Firefox bug 1493057).

#### API devtools.panels

* Реализована поддержка метода `Sidebar.setPage()` `devtools.panels.elements` (en-US) (Firefox bug 1398734).
### Изменения манифеста

* Новое свойство `pinned` ключа манифеста `page_action` (en-US) позволяет дополнениям управлять тем, должны ли при установке их действия на странице быть прикреплены к адресной строке или нет (Firefox bug 1494135).
* В Windows наличие ключей NativeMessagingHosts сначала будет проверяться в 32-разрядном представлении реестра (Wow6432Node)); следует использовать то, что подходит для вашего приложения (Firefox bug 1494709).
* Объект `search_provider` поля `chrome_settings_overrides` (en-US) отныне может включать новые свойства — `suggest_url`, `suggest_url_post_params` (Firefox bug 1486819) и `search_url_post_params`.
Предыдущие версии
-----------------

* Firefox 64 для разработчиков
* Firefox 63 для разработчиков
* Firefox 62 для разработчиков
* Firefox 61 для разработчиков (en-US)
* Firefox 60 для разработчиков (en-US)
* Firefox 59 для разработчиков (en-US)
* Firefox 58 для разработчиков (en-US)
* Firefox 57 для разработчиков (en-US)
* Firefox 56 для разработчиков (en-US)
* Firefox 55 для разработчиков (en-US)
* Firefox 54 для разработчиков (en-US)
* Firefox 53 для разработчиков
* Firefox 52 для разработчиков (en-US)
* Firefox 51 для разработчиков (en-US)
* Firefox 50 для разработчиков (en-US)
* Firefox 49 для разработчиков (en-US)
* Firefox 48 для разработчиков (en-US)
* Firefox 47 для разработчиков (en-US)
* Firefox 46 для разработчиков (en-US)
* Firefox 45 для разработчиков (en-US)
* Firefox 44 для разработчиков (en-US)
* Firefox 43 для разработчиков
* Firefox 42 для разработчиков (en-US)
* Firefox 41 для разработчиков (en-US)
* Firefox 40 для разработчиков (en-US)
* Firefox 39 для разработчиков (en-US)
* Firefox 38 для разработчиков (en-US)
* Firefox 37 для разработчиков (en-US)
* Firefox 36 для разработчиков (en-US)
* Firefox 35 для разработчиков (en-US)
* Firefox 34 для разработчиков (en-US)


Использование кеширования в Firefox 1.5 - Mozilla

Использование кеширования в Firefox 1.5
=======================================

### Введение

Firefox 1.5 использует кеширование целых Web-страниц, включая их JavaScript-состояния, в рамках сессии браузера. Переходы по посещённым страницам вперёд-назад не требуют загрузки страниц, а JavaScript-состояния сохраняются. Эта функция, обозначаемая иногда как **bfcache** (Back-Forward Cache), делает навигацию по страницам очень быстрой. Такое кешированное состояние сохраняется, пока пользователь не закроет браузер.

Есть случаи, в которых Firefox не кеширует страницы. Вот некоторые обычные программные причины того, что страница не кеширована:

* страница использует обработчик `unload` или `beforeunload`;
* страница устанавливает заголовок «cache-control: no-store».
* доступ к сайту происходит по протоколу HTTPS, а страница устанавливает по меньшей мере один из следующих заголовков:
    + «Cache-Control: no-cache»
    + «Pragma: no-cache»
    + с заголовком «Expires: 0» or «Expires» со значением даты, лежащим в прошлом относительно значению заголовка «Date» (если только не указан также заголовок «Cache-Control: max-age=»);
* страница не полностью загрузилась, когда пользователь ушёл с неё, или имеет прерванные сетевые запросы по другим причинам (например, `XMLHttpRequest`));
* страница имеет работающие IndexedDB-транзакции;
* страница верхнего уровня содержит фреймы (например, `<iframe>` (en-US)), которые не кешируются по одной из перечисленных здесь причин;
* страница находится в фрейме и пользователь загружает новую страницу в этот фрейм (в этом случае, когда пользователь уходит со с этой страницы, последнее загруженное в фреймы содержимое есть то, что закешировано).

Эта новая функция кеширования меняет поведение загрузки страницы, так что Web-авторы могут захотеть:

* узнать, когда на страницу происходит переход (когда она загружается из пользовательского кеша);
* определить поведение страницы, когда пользователь уходит со страницы (позволяя всё же странице быть закешированной).

Это позволяют сделать два новых события браузера.

### Новые события браузера

Если вы используете эти новые события, ваши страницы продолжат правильно отображаться в других браузерах (мы протестировали старые версии Firefox, Internet Explorer, Opera и Safari), а при загрузке в Firefox 1.5 добавится новая функциональность кеширования.

Примечание: по состоянию на октябрь 2009 года разработческие версии Safari добавили поддержку этих новых событий (см. webkit-баг).

Стандартное поведение для Web-страниц следующее:

1. Пользователь переходит на страницу.
2. По мере загрузки страницы выполняются инлайновые скрипты.
3. Как только страница загрузилась, срабатывает обработчик `onload`.

Некоторые страницы включают четвёртый шаг. Если страница использует обработчик `unload` или `beforeunload` handler, он срабатывает прежде чем пользователь уходит со страницы. Если присутствует обработчик `unload`, эта страница не будет кеширована.

Когда пользователь переходит на кешированную страницу, инлайновые скрипты и обработчик `onload` не запускаются (шаги 2 и 3), так как в большинстве случаев эффекты этих скриптов были сохранены.

Если страница содержит скрипты или иное поведение, запускаемое в течение загрузки, которое вы хотите продолжить выполнять каждый раз, когда пользователь заходит на страницу, или если вы хотите знать, когда пользователь заходит на кешированную страницу, используйте новое событие `pageshow`.

Если у вас есть поведение, запускаемое, когда пользователь уходит со страницы, но вы хотите воспользоваться новой функциональностью кеширования, и поэтому не хотите использовать обработчик unload, используйте новое событие `pagehide`.

#### Событие pageshow

Это событие работает так же, как событие `load`, но срабатывает каждый раз при загрузке страницы (в то время как событие `load` в Firefox 1.5 не срабатывает, когда страница загружается из кеша). При первой загрузке страницы событие `pageshow` срабатывает сразу после события `load`. Событие `pageshow` использует булевское свойство `persisted`, которое выставляется в `false` при начальной загрузке. Оно выставляется в `true`, если это не начальная загрузка (то есть когда страница уже кеширована).

Выполняйте любой JavaScript-код, который должен отработать при каждой загрузке страницы, при срабатывании событий `pageshow`.

Вызывая JavaScript-функции в обработчике события `pageshow`, вы можете обеспечить их вызов при загрузке страницы в браузерах, отличных от Firefox 1.5, вызывая этот обработчик в обработчике события `load`, как показано в примере ниже.

#### Событие pagehide

Если вы хотите определить поведение, которое происходит, когда пользователь уходит со страницы, но не хотите использовать событие `unload` (что воспрепятствовало бы кешированию страницы), вы можете использовать новое событие `pagehide`. Как и `pageshow`, событие `pagehide` использует булевское свойство `persisted`. Оно выставляется в `false`, если страница не кеширована в браузере, а в `true`,— если кеширована. Когда это свойство выставлено в `false`, обработчик `unload`, если он есть, вызывается сразу после события `pagehide`.

Firefox 1.5 пытается имитировать события загрузки в том же порядке, в каком они срабатывают при начальной загрузке страницы. Фреймы обрабатываются таким же образом, что и документ верхнего уровня. Если страница содержит фреймы, то при загрузке кешированной страницы:

* События `pageshow` из каждого фрейма срабатывают перед событием `pageshow` в главном документе.
* Когда пользователь уходит с кешированной страницы, событие `pagehide` из каждого фрейма срабатывает перед событием `pagehide` в главном документе.
* Для навигации, происходящей внутри отдельного фрейма, события срабатывают только в затронутом фрейме.

#### Кеширование страницы несмотря на обработчики `unload` и `beforeunload`

Если вы хотите использовать события `unload` или `beforeunload`, сохранив кеширование страницы, вы можете просто удалить эти события в обработчике события и восстановить их в обработчике `pageshow`, если возвращаетесь на эту страницу:

```js
window.addEventListener("pageshow", PageShowHandler, false);
window.addEventListener("unload", UnloadHandler, false);

function PageShowHandler() {
  window.addEventListener("unload", UnloadHandler, false);
}

function UnloadHandler() {
  window.removeEventListener("unload", UnloadHandler, false);
}
```

### Пример кода

Приведённый ниже пример реализует страницу, которая использует обработчики `load` и `pageshow`. Поведение этой страницы следующее:

* В браузерах, отличных от Firefox 1.5, при каждой загрузке страницы происходит следующее: событие `load` вызывает функцию `onLoad`, которая вызывает функцию `onPageShow` (а также дополнительную функцию).
* В Firefox 1.5 при первой загрузке страницы событие `load` работает так же, как и в других браузерах. Кроме того, срабатывает событие `pageshow`, и, так как `persisted` установлено в `false`, не предпринимается никаких дополнительных действий.
* В Firefox 1.5 при загрузке страницы из кеша срабатывает только событие `pageshow`. Так как `persisted` установлено в `true`, вызывается только JavaScript-код в функции `onPageShow`.

В этом примере:

* Страница вычисляет и отображает текущие дату и время каждый раз при загрузке. Это вычисление включает секунды и миллисекунды, так что вы легко можете протестировать функциональность.
* Курсор помещается в поле Name при первой загрузке страницы. В Firefox 1.5 при возвращении на страницу курсор остаётся в том поле, где он был, когда пользователь ушёл со страницы. В других браузерах курсор опять помещается в поле Name.

```html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Order query : Firefox 1.5 Example</title>
    <style type="text/css">
 body,
 p {
 font-family: Verdana, sans-serif;
 font-size: 12px;
 }
 </style>
    <script type="text/javascript">
 function onLoad() {
 loadOnlyFirst();
 onPageShow();
 }

 function onPageShow() {
 //вычисление текущего времени
 var currentTime = new Date();
 var year = currentTime.getFullYear();
 var month = currentTime.getMonth() + 1;
 var day = currentTime.getDate();
 var hour = currentTime.getHours();
 var min = currentTime.getMinutes();
 var sec = currentTime.getSeconds();
 var mil = currentTime.getMilliseconds();
 var displayTime =
 month +
 "/" +
 day +
 "/" +
 year +
 " " +
 hour +
 ":" +
 min +
 ":" +
 sec +
 ":" +
 mil;
 document.getElementById("timefield").value = displayTime;
 }

 function loadOnlyFirst() {
 document.zipForm.name.focus();
 }
 </script>
  </head>
  <body onload="onLoad();" onpageshow="if (event.persisted) onPageShow();">
    <h2>Order query</h2>

    <form
 name="zipForm"
 action="http://www.example.com/formresult.html"
 method="get">
      <label for="timefield">Date and time:</label>
      <input type="text" id="timefield" /><br />
      <label for="name">Name:</label>
      <input type="text" id="name" /><br />
      <label for="address">Email address:</label>
      <input type="text" id="address" /><br />
      <label for="order">Order number:</label>
      <input type="text" id="order" /><br />
      <input type="submit" name="submit" value="Submit Query" />
    </form>
  </body>
</html>
```

Напротив, если приведённая выше страница не обрабатывает событие `pageshow` и выполняет все вычисления в обработчике события `load` (если код написан так, как показано в примере ниже), как положение курсора, так и дата/время в Firefox 1.5 будут кешированы, когда пользователь уйдёт со страницы. Когда пользователь вернётся на страницу, отобразятся кешированные дата/время.

```html
<head>
  <script>
 function onLoad() {
 loadOnlyFirst();

 //calculate current time
 var currentTime = new Date();
 var year = currentTime.getFullYear();
 var month = currentTime.getMonth() + 1;
 var day = currentTime.getDate();
 var hour = currentTime.getHours();
 var min = currentTime.getMinutes();
 var sec = currentTime.getSeconds();
 var mil = currentTime.getMilliseconds();
 var displayTime =
 month +
 "/" +
 day +
 "/" +
 year +
 " " +
 hour +
 ":" +
 min +
 ":" +
 sec +
 ":" +
 mil;
 document.getElementById("timefield").value = displayTime;
 }

 function loadOnlyFirst() {
 document.zipForm.name.focus();
 }
 </script>
</head>
<body onload="onLoad();"></body>
```

### Developing Firefox extensions

Firefox 1.5 extensions need to allow for this caching functionality. If you are developing a Firefox extension that you want to be compatible with both 1.5 and earlier versions, make sure that it listens for the `load` event for triggers that can be cached and listens for the `pageshow` event for triggers that shouldn't be cached.

For instance, the Google Toolbar for Firefox should listen for the `load` event for the autolink function and to the `pageshow` event for the PageRank function in order to be compatible with both 1.5 and earlier versions.