Новшества node-webkit версии 0.5.1

от автора

Позавчера (27 апреля) из праведных недр интеловского Центра технологий с открытым исходным кодом (а это тот самый Центр, который hshhhhh обозревал неделю назад во блогозаписи «Печеньки для пингвина») вышла в свет новая версия движка node-webkit могучего объединения Node и WebKit (точнее даже не просто WebKit, а Chromium — и в дальнейшем, вероятно, Blink), обеспечивающего быстрое и бесхитростное создание GUI-приложений методами веборазработки (код на JavaScript с употреблением API от Node.js, а интерфейс на HTML да на CSS) под операционные системы Windows, Mac OS X и Linux.

Новая версия имеет номер 0.5.1; на её основе нетрудно составить и запустить, например, вот такое окно:

[скриншот]

Одну из предыдущих версий node-webkit (0.4.1) мне довелось обозреть в начале февраля, а теперь на дворе конец апреля. Настала пора рассказать обо всех тех изменениях, которыми сопровождался выход версии 0.4.2, за нею 0.5.0, и затем 0.5.1 наконец.

  • Крупнейшим из изменений стала поддержка распечатывания страниц: начала работу функция window.print(). К сожалению, дополняющая её возможность предпросмотра страниц в их печатном виде ещё не реализована (но это планируется в версии 0.5.2.)
     
  • У объекта Window появилась новая функция capturePage(), позволяющая получить скриншот видимой в окне части страницы. Имеется пример.
     
  • С целью частичной защиты исходного кода появилась новая утилита nwsnapshot, обеспечивающая предварительную компиляцию указанного джаваскриптового файла в машинно-зависимый код, который можно распространять вместо исходного кода, если исходный код не хочется никому показывать.
     
  • Значок для макинтошевского системного лотка теперь может иметь альтернативное (активное) начертание. Также появилась поддержка сочетания клавиш «CMD» и «`» для перехода между окнами на Маках.
     
  • Элемент <input type="file">, который служит для вызова диалоговых окон открытия или сохранения файла, теперь можно снабжать атрибутом nwworkingdir, значение которого указывает тот подкаталог в файловой системе, где диалог должен начать работу. Таким образом, если программа правильно догадалась о том, где пользователь хранит свои файлы, то тогда пользователь оказывается избавлен от лишних усилий по облазыванию своей файловой системы.
     
  • Новая система безопасности предотвращает употребление кода Node.js страницами, загруженными в <iframe>, когда элемент <iframe> снабжён атрибутом nwdisable.
     
  • Специальные усилия предприняты для того, чтобы приложение из <iframe> не могло вылезти наружу и занять всё окно целиком. Во-первых, игнорируется заголовок X-Frame-Options в заголовке HTTP-отклика. Во-вторых, если элемент <iframe> снабжён атрибутом с придуманным мною названием nwfaketop, то загруженная в <iframe> страница получает поддельные значения window.top, window.parent и так далее, чтобы не могла понять, что находится во фрейме, и не могла вылезти из фрейма наружу.

(Пока что получается, что в целях безопасности придётся указывать оба nw-атрибута: <iframe nwdisable nwfaketop src=""></iframe>. Это неказистое явление — временное; его планируют устранить в одной из будущих версий node-webkit.)

Кроме того, обновлены обе основные составляющие движка: Node.js — до версии 0.10.5, а Chromium — до версии 27.0.1430.0.

Всем разработчикам, употреблявшим более ранние версии движка node-webkit, рекомендую без промедления обновить их на новую версию для большей безопасности, если работа приложения была связана с загрузкою недоверенных страниц во фреймы.

ссылка на оригинал статьи http://habrahabr.ru/post/178353/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *