Свежая сборка альфы Opera 12.00 принесла с собой столько интересного, что мы решили рассказать об этом подробнее. Ссылки на сборку можно найти в блоге Desktop Team или подождать немного, пока она появится в виде обновления для Opera Next. Что же интересного предлагает эта сборка для разработчиков?
Новые возможности
- Завершено внедрение XHR2 (XMLHttpRequest2), в частности Upload и Progress Events
- Теперь Opera поддерживает декларативный заголовок «Do Not Track» для того, чтобы сайты не отслеживали вашу активность, подробнее по-английски: Implementing Do Not Track and the work at W3C
Управление переносом в <textarea>
Когда для
<textarea>
применяется свойство white-space
со значением, отличным от nowrap
, то Opera, как и другие браузеры, продолжает переносить текст, независимо от установленного значения. Тем не менее, мы решили изменить описанное поведение в этой сборке, чтобы учитывать применённые стили. К примеру, у вас есть свойство white-space: pre
для <textarea>
— такой текст должен располагаться ровно так, как его вставили в поле, т.е. занимать только две строки.Поскольку только мы поддерживаем такое, вполне логичное, поведение для
<textarea>
, то надо будет внимательнее смотреть по сторонам на предмет проблем с совместимостью. Если вы обнаружите сайты, которые ломаются из-за нового поведения — расскажите нам об этом, например в твиттере: @ODevRel_ru.Исправленные ошибки в CSS
- Был исправлен странный баг, который приводил к инвертации фонового цвета для блока, к которому применялось значение
currentColor
, см. пример с блоком, который теперь синий, как и в остальных браузерах. - Когда свойство
list-style-image
обращается к обычной картинке в присутствииlist-style-type: none
, то буллитом должна стать указанная картинка. Ранее Opera не отрисовывала эту картинку, если она создавалась динамически, как CSS-градиент, но сейчас всё в порядке: пример использования градиентов для динамического создания буллита. Хотя мало кто знает, что это в принципе возможно :) - Раньше Opera рассчитывала тень для блока и текста неправильно. Спецификация говорит о том, что свойство
box-shadow
должно отрисовываться как размытие по Гауссу со стандартным отклонением равным половине радиуса размытия. Теперь Opera рисует тень правильно как для блоков, так и для текста: см. пример сравненияbox-shadow
с размытием по Гауссу в SVG. - Выделение текста было невозможно при
line-height:0
иoverflow:hidden
. Теперь это исправлено. - Opera обычно игнорировала свойства, идущие за правилом с
!important
в конце, но без закрывающей точки с запятой. Эта особенность вызывала проблемы совместимости с многими сайтами, на которых встречались некорректные стилевые правила. Отличный, кстати, повод задуматься о валидности своего кода, кхм-кхм. См. пример того, как некорректное использование!important
влияет на оформление текста. - Работая над улучшением производительности, мы обнаружили и исправили баг с двойным кликом, который приводил залипанию элемента в состоянии
:active
. См. пример ситуации, приводившей к залипанию. - Теги
<style>
во встроенном в HTML5-документ SVG-файле раньше игнорировались, но теперь нет. - Возможность удалить свойство
border-radius
при помощиelement.style.removeProperty
теперь работает, как и следовало.
Работа над различными API
- Реализация EventSource была обновлена, чтобы
Use Credentials
по умолчанию имел значениеfalse
, в соответствии с последним обновлением спецификации. - Метод
postMessage
теперь возвращаетnull
, как указано в спецификации, а неfile: //localhost
, как раньше. - По случайности, последнее событие загрузки в FileReader API вызывалось после события
loadend
, но это уже исправлено. Event.prototype
теперь поддерживает константы:CAPTURING_PHASE
,AT_TARGET
,BUBBLING_PHASE
,CAPTURING_PHASE
,AT_TARGET
, andBUBBLING_PHASE
document.lastModified
обновлён и возвращает текущее время в соответствии со спецификацией.- Мы заметили, что работа с DOM, выполнение
cloneNodes
и присваиваниеinnerHTML
вызывает чрезмерные всплески активности CPU на больших страницах, вроде этой. Теперь отрисовка таких страниц должна намного меньше занимать CPU.
HTML5-формы
Если цифровое значение элемента
<input type="date">
был спрятано, обнулено, а потом показано — старое значение по-прежнему отображалось, как в этом примере. Проблема была исправлена.И прочее…
Пустая страница about:blank недостаточно пуста! Раньше страница about:blank выглядела так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html dir="ltr">
<head>
<title>Blank page</title>
<meta name="viewport" content="width=device-width,user-scalable=no"/>
</head>
<body></body>
</html>
Теперь страница содержит только самое необходимое, только то, что нужно HTML5-парсеру:
<html><head></head><body></body></html>
И, что называется, one more thing™
Самые любопытные из вас, заглядывающие в список изменений движка Presto, могли заметить интеграцию пакетов 267-271, точнее его второй пункт. Ничего такого, просто не говорите, что мы вас не предупреждали ;)
Читать дальше
- Блог Labs на Dev.Opera с анонсами экспериментальных релизов, вроде аппаратного ускорения, WebGL или getUserMedia для доступа к веб-камере.
- Блог команды Desktop со свежими тестовыми сборками, которые станут ближайшими релизами
- Блог разработчиков отладчика Opera Dragonfly, где публикуются все изменения и новинки экспериментальных веток
- Твиттер @ODevRel_ru с новостями, советами и даже иногда инсайдами для разработчиков.