Позавчера (27 апреля) из праведных недр интеловского Центра технологий с открытым исходным кодом (а это тот самый Центр, который hshhhhh обозревал неделю назад во блогозаписи «Печеньки для пингвина») вышла в свет новая версия движка node-webkit — могучего объединения Node и WebKit (точнее даже не просто WebKit, а Chromium — и в дальнейшем, вероятно, Blink), обеспечивающего быстрое и бесхитростное создание GUI-приложений методами веборазработки (код на JavaScript с употреблением API от Node.js, а интерфейс на HTML да на CSS) под операционные системы Windows, Mac OS X и Linux.
Новая версия имеетномер 0.5.1; на её основе нетрудно составить и запустить, например, вот такое окно:
![[скриншот]](https://habrastorage.org/r/w1560/storage2/7d8/8e0/416/7d88e041690b95897ba69161b3789127.png)
Одну из предыдущих версий node-webkit (0.4.1) мне довелось обозреть в начале февраля, а теперь на дворе конец апреля. Настала пора рассказать обо всех тех изменениях, которыми сопровождался выходверсии 0.4.2, за нею 0.5.0, и затем 0.5.1 наконец. Рассказываю:
(Пока что получается, что в целях безопасности придётся указывать обаnw-атрибута: <iframe nwdisable nwfaketop src="…"> … </iframe>. Это неказистое явление — временное; его планируют устранить в одной из будущих версий node-webkit.)
Кроме того, обновлены обе основные составляющие движка:Node.js — до версии 0.10.5 (что видно и на вышеприведённом скриншоте), а Chromium — до версии 27.0.1430.0.
Всем разработчикам, употреблявшим более ранние версии движкаnode-webkit, рекомендую без промедления обновить их на новую версию для большей безопасности, если работа приложения была связана с загрузкою недоверенных страниц во фреймы.
Новая версия имеет
![[скриншот]](https://habrastorage.org/storage2/7d8/8e0/416/7d88e041690b95897ba69161b3789127.png)
Одну из предыдущих версий node-webkit (0.4.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 и так далее, чтобы не могла понять, что она находится во фрейме, и не могла вылезти из фрейма наружу.
(Пока что получается, что в целях безопасности придётся указывать оба
Кроме того, обновлены обе основные составляющие движка:
Всем разработчикам, употреблявшим более ранние версии движка