Как распаковать js файл

Обновлено: 06.07.2024

Я хочу отображать OpenOffice файлы,.odt и .odp на стороне клиента с помощью веб-браузера.

Как я могу это сделать?

Я написал unzipper в Javascript. Оно работает.

NB: ссылки мертвы; Скоро найду нового хозяина.

В качестве источника используется демонстрационная страница ZipFile.htm и 3 разных сценария, один для класса zipfile, один для класса inflate и один для класса чтения двоичных файлов. Демо также зависит от jQuery и jQuery UI. Если вы просто загрузите файл js-zip.zip, там будет весь необходимый источник.

Вот что выглядит код приложения в Javascript:

Демонстрация работает в два этапа: readFile fn запускается щелчком и создает объект ZipFile, который читает zip файл. Там асинхронный обратный вызов для того, когда чтение завершается (как правило, происходит менее чем за секунду для разумных размеров zips) - в этой демонстрации обратный вызов сохраняется в локальной переменной doneReading, которая просто вызывает extractEntries , что просто слепо распаковывает все содержимое предоставленного zip файла. В реальном приложении вы, вероятно, выберете некоторые из извлекаемых записей (разрешите пользователю выбирать или выбирать одну или несколько записей программно и т.д.).

extractEntries fn выполняет итерацию по всем записям и вызывает на каждом из них extract() , передавая обратный вызов. Декомпрессия записи занимает время, возможно, 1 с или больше для каждой записи в zip файле, что означает, что асинхронность является подходящей. Обратный вызов extract просто добавляет извлеченный контент в аккордеон jQuery на странице. Если содержимое двоично, то оно форматируется как таковое (не показано).

Это работает, но я думаю, что утилита несколько ограничена.

С одной стороны: это очень медленно. Занимает

Для другого: он не выполняет потоковую передачу. Это в основном завалы во всем содержимом zipfile в память. В "реальной" среде программирования вы можете читать только метаданные zip файла (скажем, 64 байта на запись), а затем читать и распаковывать другие данные по желанию. Невозможно сделать IO, как в javascript, насколько я знаю, поэтому единственный вариант - прочитать весь zip в памяти и сделать произвольный доступ в нем. Это означает, что для больших zip файлов будут предъявляться необоснованные требования к системной памяти. Не так много для небольшого zip файла.

Кроме того: он не обрабатывает zip файл "общий регистр" - есть много опций zip, которые я не удосужился реализовать в unzipper - как шифрование ZIP, шифрование WinZip, zip64, UTF- 8 закодированных имен файлов, и т.д. ( EDIT - теперь он обрабатывает имена файлов с кодировкой UTF-8). Однако класс ZipFile обрабатывает основы. Некоторые из этих вещей не будут трудно реализовать. У меня класс шифрования AES в Javascript; которые могут быть интегрированы для поддержки шифрования. Поддержка Zip64, вероятно, будет бесполезной для большинства пользователей Javascript, поскольку она предназначена для поддержки > 4gb zipfiles - не нужно извлекать их в браузере.

Я также не тестировал случай распаковки двоичного содержимого. Прямо сейчас он распаковывает текст. Если у вас есть заархивированный двоичный файл, вам нужно будет отредактировать класс ZipFile для правильной обработки. Я не понял, как это сделать. Теперь он делает двоичные файлы.

EDIT. Я обновил библиотеку JS и демо-версию. Теперь он содержит двоичные файлы, в дополнение к тексту. Я сделал его более устойчивым и более общим - теперь вы можете указать кодировку, используемую при чтении текстовых файлов. Кроме того, демонстрационная версия расширена - она ​​показывает, помимо прочего, файл XLSX в браузере.

Я хочу загрузить zip-файл из интернета и распаковать его в памяти без сохранения во временный файл. Как я могу это сделать?

вот что я пробовал:

[редактирование] Как было предложено, я попытался использовать библиотеку adm-zip, и я все еще не могу сделать эту работу:

вам нужна библиотека, которая может обрабатывать буферов. Последняя версия adm-zip будет делать:

идея в том, чтобы создать массив буферов и объединить их в один в конце. Это связано с тем, что буферы не могут быть изменены.

Я не совсем понимаю, что вы пытаетесь сделать, но имхо это лучший подход. Вы должны сохранить ваши данные в памяти только время вам действительно нужно это, а потом поток в формате CSV парсер.

если вы хотите сохранить все свои данные в памяти, вы можете заменить метод парсера csv fromPath С from который принимает буфер вместо и в GetData возвращает непосредственно unzipped

можно использовать AMDZip (как сказал @mihai) вместо node-zip , просто обратите внимание, потому что AMDZip еще не опубликован в npm, поэтому вы нужно:

N. B. предположение: zip-файл содержит только один файл

если вы находитесь под MacOS или Linux, вы можете использовать unzip команда для распаковки из stdin .

в этом примере я читаю zip-файл из файловой системы в Buffer объект, но он работает с загруженным файлом, а также:

который на самом деле является только узловой версией:

редактировать: стоит отметить, что это не будет работать, если входной zip слишком большой, чтобы читать в одном куске из stdin. Если вам нужно прочитать большие файлы, и ZIP-файл содержит только один файл, вы можете использовать funzip выступает вместо unzip :

если ваш zip-файл содержит несколько файлов (и файл, который вы хотите, не первый) я боюсь сказать тебе не повезло. Распаковать нужно искать в .zip файл, так как zip-файлы являются просто контейнером, и unzip может просто распаковать последний файл в нем. В этом случае вы должны временно сохранить файл (узел-temp пригождается).

два дня назад модуль node-zip был выпущен, который является оболочкой для JavaScript только версии Zip:JSZip.

есть ли что-то в JavaScript, как @import в CSS, который позволяет включить файл JavaScript внутри другого файла JavaScript?

в старых версиях JavaScript не было импорта, включения или требования, поэтому было разработано множество различных подходов к этой проблеме.

но с 2015 года (ES6) JavaScript имеет модули ES6 стандарт для импорта модулей в узел.js, который также поддерживается большинство современных браузеров.

для совместимости со старыми браузерами, построить и/или transpilation инструменты могут быть используемый.

в ECMAScript модулей (ЕС6) были поддержаны в узел.js с v8.5, с --experimental-modules флаг. Все вовлеченные файлы должны иметь

Если кто-то ищет что-то более продвинутое, попробовать RequireJS. Вы получите дополнительные преимущества, такие как управление зависимостями, лучший параллелизм и избежание дублирования (т. е. получение сценария более одного раза).

Вы можете записать свои файлы JavaScript в" модули", а затем ссылаться на них как на зависимости в других сценариях. Или вы можете использовать RequireJS как простое решение "go get this script".

определить зависимости как модули:

некоторых-зависимость.js

реализация.js ваш" основной " файл JavaScript, который зависит от некоторых-зависимость.js

RequireJS загружает простые файлы JavaScript, а также более определенные модули. Он оптимизирован для использования в браузере, в том числе в Интернете Рабочий, но его можно использовать в других JavaScript окружающая среда, как Носорог и узел. Он реализует асинхронный модуль API.

RequireJS использует простые теги скриптов для загрузки модулей / файлов, поэтому он должен позвольте для легкой отладки. Его можно использовать просто для загрузки существующего Файлы JavaScript, так что вы можете добавить его в существующий проект без необходимость переписывать файлы JavaScript.

.

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

вам нужно использовать jQuery.append() на <head> элемент вашей страницы, то есть:

однако этот метод также имеет проблему: если ошибка происходит в импортированном файле JavaScript, Палий (а также Консоль ошибок Firefox и Инструменты Разработчика Chrome также) сообщит о своем месте неправильно, что является большой проблемой, если вы используете Firebug для отслеживания ошибок JavaScript (я делаю). Firebug просто не знает о недавно загруженном файле по какой-то причине, поэтому, если в этом файле возникает ошибка, она сообщает, что она произошла в вашем main HTML-код файл, и у вас будут проблемы с выяснением реальной причины ошибки.

но если это не проблема для вы, то этот метод должен работать.

я на самом деле написал плагин jQuery под названием $.import_js(), который использует этот метод:

поэтому все, что вам нужно сделать для импорта JavaScript, это:

я сделал простой тест для этого в пример.

он включает в себя в основном HTML и скрипт main.js использует $.import_js() для импорта дополнительного файла с именем included.js , которым определяет эту функцию:

и сразу после включения included.js на hello() функция вызывается, и вы получаете предупреждение.

(этот ответ является ответом на комментарий e-satis).

другой способ, который, на мой взгляд, намного чище, - сделать синхронный запрос Ajax вместо использования <script> - тег. Что тоже как узел.js ручки включает.

вот пример использования jQuery:

затем вы можете использовать его в своем коде, как вы обычно используете include:

и иметь возможность вызвать функцию из требуемого скрипта в следующей строке:

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

вы просто должны написать import cond from 'cond.js'; для загрузки макроса с именем cond из файла cond.js .

поэтому вам не нужно полагаться на какую-либо структуру JavaScript, и вам не нужно явно делать Ajax звонки.

можно динамически генерировать тег JavaScript и добавлять его в HTML-документ из другого кода JavaScript. Это загрузит целевой файл JavaScript.

возможно, вы можете использовать эту функцию, которую я нашел на этой странице Как включить файл JavaScript в файл JavaScript?:

здесь синхронно версия без jQuery:

обратите внимание, что для получения этого рабочего междоменного сервера необходимо установить allow-origin заголовок в ответе.

Я только что написал этот код JavaScript (используя прототип на дом манипуляции):

вот обобщенная версия того, как Facebook делает это для их вездесущей кнопки Like:

если он работает для Facebook, он будет работать для вас.

если вы хотите в чистом JavaScript, вы можете использовать document.write .

если вы используете библиотеку jQuery, вы можете использовать $.getScript метод.

большинство решений, показанных здесь, подразумевают динамическую нагрузку. Вместо этого я искал компилятор, который собирает все зависящие файлы в один выходной файл. То же самое, что меньше/Сасс препроцессоры имеют дело с CSS @import at-rule. Поскольку я не нашел ничего достойного такого рода, я написал простой инструмент для решения вопроса.

в ветви jQuery master они просто объединяют атомарные исходные файлы в один, начиная с intro.js и заканчивая outtro.js . Это меня не устраивает, поскольку это не обеспечивает гибкости в дизайне исходного кода. Проверьте, как это работает с jsic:

src / форма / вход / тел.js

теперь мы можем запустить компилятор:

и получить объединенный файл

вы также можете собрать свой скрипт PHP:

если вы хотите, чтобы загрузить файл JavaScript использование функций импорта/включаемый файл, вы также можете определить глобальный объект и установить функции как элементы объекта. Например:

глобальные.js

file1.js

file2.js

main.js

вам просто нужно быть осторожным, когда вы включаете скрипты в HTML-файл. Порядок должен быть как в ниже:

или вместо включения во время выполнения используйте скрипт для объединения перед загрузкой.

Я использую звездочки (Я не знаю, есть ли другие). Вы создаете код JavaScript в отдельных файлах и включаете комментарии, которые обрабатываются механизмом звездочек как включенные. Для разработки вы можете включать файлы последовательно, а затем для производства, чтобы объединить их.

В случае, если вы используете Веб-Работников и хотите включить дополнительные скрипты в область рабочего, другие ответы, предоставленные о добавлении скриптов в head бирка, etc. не будет работать на вас.

к счастью, веб-работники имеют свои собственные importScripts функции который является глобальной функцией в области веб-работника, родной для самого браузера, как это является частью спецификации.

в качестве альтернативы, как второй по величине проголосовали ответ на ваш вопрос подчеркивает, RequireJS также может обрабатывать включая скрипты внутри веб-работника (вероятно, вызывая importScripts сам, но с несколькими другими полезными функциями).

у меня была простая проблема, но я был озадачен ответами на этот вопрос.

мне пришлось использовать переменную (myVar1), определенную в одном файле JavaScript (myvariables.js) в другом файле JavaScript (main.в JS).

для этого я сделал, как показано ниже:

загрузил код JavaScript в HTML-файл, в правильном порядке, myvariables.сначала js, затем main.js:

As вы видели, что я использовал переменную в одном файле JavaScript в другом файле JavaScript, но мне не нужно было включать одну в другую. Мне просто нужно было убедиться, что первый файл JavaScript загружен до второго файла JavaScript, а переменные первого файла JavaScript доступны во втором файле JavaScript автоматически.

Это спасло мой день. Надеюсь, это поможет.

на @import синтаксис для достижения CSS-подобного импорта JavaScript возможен с помощью такого инструмента, как смесь через их специальный .mix тип файла (см. здесь). Я предполагаю, что приложение просто использует один из вышеупомянутых методов внутри, хотя я не знаю.

из документации по смеси на .mix файлы:

Mix файлы просто .js or .css файлы С.смесь. в имени файла. Ля файл mix просто расширяет функциональность нормального стиля или файл скрипта и позволяет импортировать и комбинировать.

вот пример .mix файл, который объединяет несколько .js файл:

смесь выводит это как scripts-global.js , а также как уменьшенная версия ( scripts-global.min.js ).

примечание: Я никоим образом не связан с Mixture, кроме использования его в качестве интерфейсного инструмента разработки. Я столкнулся с этим вопросом, увидев .mix файл JavaScript в действии (в одном из шаблонов смеси) и немного смущен этим ("вы можете это сделать?"Я думал про себя). Затем я понял, что это специфичный для приложения тип файла (несколько разочаровывающий, согласен). Тем не менее, подумал, что знание может быть полезно для других.

обновление: смесь теперь бесплатно (offline).

обновление: смесь теперь прекращена. старые релизы смеси еще доступно

мой обычный метод:

вот объяснение того, как код работает для тех, кто любопытен: по сути, он создает новый тег скрипта (после первого) URL-адреса. Он устанавливает его в асинхронный режим, поэтому он не блокирует остальную часть кода, но вызывает обратный вызов, когда readyState (состояние содержимое для загрузки) изменяется на "loaded".

на современном языке это было бы

этот скрипт добавит файл JavaScript в начало любого другого <script> tag:

появилась головы.js. Это очень легко иметь дело:

Как вы видите, это проще, чем требовать.js и так же удобно, как jQuery $.getScript метод. Он также имеет некоторые дополнительные функции, такие как условная загрузка, обнаружение функций и больше.

Я пришел к этому вопросу, потому что я искал простой способ поддерживать коллекцию полезных плагинов JavaScript. Увидев некоторые из решений здесь, я придумал следующее:

создать файл под названием "Плагины.js "( или расширения.js или что у вас есть). Храните файлы плагинов вместе с этим основным файлом.

Плагины.js будет иметь массив под названием "pluginNames []", который мы будем перебирать над каждым(), затем добавьте тег к головка для каждого плагина

/ / установить массив для обновления при добавлении или удалении файлов плагинов var pluginNames = ["надписи", "fittext", "butterjam" и др.]; // один тег скрипта для каждого плагина $.каждый (pluginNames, функция()< $('head').добавлять''(); >);

вручную вызовите только один файл в голове:
<script src="https://askdev.ru/q/kak-vklyuchit-fayl-javascript-v-drugoy-fayl-javascript-32/js/plugins/plugins.js"></script>

Я обнаружил, что, хотя все плагины попадали в тег head так, как они должны были, они не всегда запускались браузером при нажатии на страницу или обновлении.

Я обнаружил, что более надежно просто писать теги скриптов в PHP include. Вам нужно написать его только один раз, и это такая же работа, как вызов плагина с помощью JavaScript.

проблема с $.getScript и действительно любое другое решение, которое требует обратного вызова при загрузке, заключается в том, что если у вас есть несколько файлов, которые его используют и зависят друг от друга, у вас больше нет способа узнать, когда все скрипты были загружены (как только они вложены в несколько архив.)

пример:

вы можете попробовать использовать $.when для проверки массива отложенные объекты, но теперь вы делаете это в каждом файле и file2 будет считать запущенным, как только $.when выполняется не при выполнении обратного вызова, поэтому file1 все еще продолжает выполнение до загрузки file3. Это все та же проблема.

я решил идти назад, а не вперед. Спасибо document.writeln . Я знаю, что это табу, но пока оно используется правильно, это работает хорошо. Вы получаете код, который можно легко отладить, показывает в DOM правильно и может обеспечить порядок, в котором зависимости загружаются правильно.

вы можете, конечно, использовать $ ("тело").append (), но тогда вы больше не можете правильно отлаживать.

Примечание: Вы должны использовать это только во время загрузки страницы, иначе вы получите пустой экран. Другими словами,всегда размещайте это перед / вне документа.готов. Я не тестировал использование этого после загрузки страницы в событии click или что-то в этом роде, но я довольно конечно, не получится.

мне понравилась идея расширения jQuery, но, очевидно, вам это не нужно.

перед вызовом document.writeln , он проверяет, чтобы убедиться, что сценарий еще не был загружен, оценив все элементы сценария.

я предполагаю, что сценарий не полностью выполняется до его document.ready событие было выполнено. (Я знаю, используя document.ready не требуется, но многие люди используют его, и регулировать это защита.)

когда загружаются дополнительные файлы document.ready обратные вызовы будут выполняться в правильном порядке. Чтобы решить эту проблему при фактической загрузке сценария, импортированный сценарий повторно импортируется и выполнение останавливается. Это приводит к тому, что исходный файл теперь имеет свой document.ready обратный вызов выполняется после любого из любых сценариев, которые он импортирует.

вместо этого подхода вы можете попытаться изменить jQuery readyList , но это казалось хуже решение.

Notepad Plus Plus 7.5.8

Многие пользователи MS Windows давно успели заметить, что стандартный блокнот - это довольно неудобная в своем использовании программа. Заменой ей может стать данный бесплатный редактор текстовых файлов, обеспечивающий поддержку синтаксиса большого количества языков программирования. Программа содержит в себе довольно широкий набор опций и отличается минимальным потреблением ресурсов процессора. Программа делает возможным одновременный просмотр нескольких документов сразу и редактирование их, без закрытия лишних окон. Доступной стала и такая опция, как редактирование одного и того же документа в разных местах, что очень удобно.

Notepad2 4.2.25

Notepad2 4.2.25

Notepad2 – простое приложение, позволяющее печатать и редактировать текст. Она поможет в создании HTML-страниц, программировании на различных языках (CSS, Java, JavaScript, Python, SQL, Perl, PHP) так как способна подсвечивать код. Программа построена по принципу простого блокнота, она маловесна и компактна. Этот текстовый редактор проверяет все скобки на наличие пары, поддерживает авто отступы. Программа Notepad2 не только поддерживает кодировки ASCII и UTF-8, но и умеет их конвертировать. Позволяет откатывать нежелательные операции на много уровней назад. Поддерживает блочное выделение элементов текста и имеет нумерованные ст.

Aptana Studio 3.6.1

Aptana Studio 3.6.1

Одна из лучших программ создания веб аппликаций для WEB 2.0 разработчиков. Включает в себя удобный и простой интерфейс работы, удобные редакторы HTML, PHP, Ruby, CSS, Python и JavaScript, поддерживает HTML5, имеет встроенный Дебагер, с широким спектром возможностей, поддержка различных браузеров, таких как Mozilla Firefox, Opera, Google Chrome, Internet Explorer и Safari, оперативно поддерживает все новые технологии, такие как Adobe AIR и даже разработка под IPhone 5. Справочная система довольно богатая и без сомнений это правильный выбор для любого разработчика. Программа работает на платформе Eclipse и имеет массу плагинов чт.

Bluefish 2.2.7

Bluefish 2.2.7

Bluefish – мощная программа для программирования и веб-разработки. Имеет множество функций для разработки сайтов, скриптов а так же программных кодов. Программа работает на большой скорости, может загрузить сотни файлов в считанные секунды. Без каких либо проблем откроет более 500+ документов одновременно. Есть очень полезные функции, как хороший поиск по файлам а так же без лимитные функции «Отмена» и «Повтор». Автоматическое восстановление при незапланированном выключение. Интеграция внешних программ и внешних фильтров. Поддержка языка, а именно справочная информация онлайн. Программа в разработке, но уже поддерживает 17 язык.

PSPad 4.6.1

PSPad 4.6.1

PSPad – весьма полезный редактор программного кода, подходящий для программистов-кодеров, которые пишут на нескольких языках. Подойдёт тем, кому нужна подсветка программного кода. Может легко заменить популярные инструменты. PSPad докажет свою ценность при работе с синтаксисом сложного кода. Он был создан, чтобы помочь всем типам пользователей. Программа поставляется с впечатляющим списком шаблонов. Есть функции, как подсветка синтаксиса, записи макросов либо поиск и функция замены, которые являются общими для подобных приложений. Он поставляется с редактором HEX, клиентом FTP, так что пользователь может редактировать код прямо.

Komodo Edit 9.0.1

Komodo Edit 9.0.1

Komodo Edit - удобный редактор кода, поддерживающий широкий спектр различных языков программирования. Программа дает пользователям возможность работать сразу с несколькими файлами, писать код станет более эффективно с использованием функции автозаполнения, подсказок. Приложение позволяет автоматически выделять переменные при их выборе. С помощью редактора можно просматривать файлы на других программных языках. Программа поддерживает окраску синтаксиса, отступы. Может проверять параметры синтаксиса, сниппеты, используемые для хранения кода исходного столбца. Имеет режим простого редактирования и поддерживает перетаскивание элеме.

SynWrite 6.23

SynWrite 6.23

В интернете очень много программ, позволяющих редактировать исходный код другой программы, файла и др. Однако большинство из подобных программ являются всего лишь текстовым редактором наподобие блокнота. Отличаются они от вышеуказанного редактора лишь тем, что имеют подсветку синтаксиса. Однако в некоторых случаях, такого функционала программы оказывается недостаточно. Программисту бывает необходимо быстро находить различные части документа. И вот, наконец-то, в появилась программа, позволяющая решить эту проблему. Программа называется SynWrite. Её отличительная особенность – наличие навигационной панели с деревом, котор.

FileOptimizer 7.90.1325

FileOptimizer 7.90.1325

FileOptimizer – удобное приложение для сжатия файлов, созданное одной из независимых команд программистов. Данное приложение отличается улучшенными алгоритмами сжатия и высокой скоростью работы. Программа позволяет сжимать файлы практически всех типов, включая архивы, текстовые форматы, форматы изображений и т.п. Также, данная программа может работать со скриптами, а также через командную строку, что будет особенно полезно опытным пользователям. Для начинающих пользователей же, всё очень просто. Программа интегрируется в контекстное меню, что позволяет очень быстро сжимать файлы, находящиеся на любом диске и в любой папке.

Ghost Installer 4.8

Ghost Installer 4.8

Ghost Installer - компактное приложение, разработанное для создания пакетов-установщиков. Благодаря такой программе можно создать любую оболочку для инсталляции определенной программы. Установщик поддерживает неограниченное количество диалоговых окон. Создаваемые пакеты-установщики способны проверять реестр операционной системы на наличие нужных записей. Ghost Installer позволяет редактировать конфигурационные файлы инсталлируемых программ. Также можно настроить показ различных объявлений в процессе установки. Любую нужную программу можно значительно сжать, тем самым уменьшив размер конечного пакета. При желании пользователь им.

RJ TextEd 10.70

RJ TextEd 10.70

RJ TextEd - редактор кода, который можно использовать для создания html страниц, либо для написания других программ или работы с php. Отличительной особенностью программы является наличие предварительного просмотра получаемой веб-страницы в одном из браузеров. Причем все вводимые изменения будут тут же видимы в самом браузере. В качестве такого просмотрщика можно использовать и внутренний браузер. Однако создавать веб-страницу в таком редакторе не очень удобно, поскольку все необходимые для этого функции находятся в разных местах. Зато в php данный редактор показывает себя отлично. При работе с любым кодом, вы можете при.

Free Opener 2.2

Free Opener 2.2

Free Opener - достаточно функциональный просмотрщик самых популярных файлов, включая архивы Winrar, документы Microsoft Office, PDF, документы Photoshop, торрент файлы, иконки, веб страницы, текстовые документы, аудио и видео файлы, графические файлы в том числе и Flash и многое другое. Количество поддерживаемых файлов превышает семидесяти. В программе отсутствуют привычные нам настройки и опции за исключением смена дизайна. Также необходима отметить, что отсутствует русский язык, но учитывая простоту, не стоит недооценивать программу. Free Opener - это универсальная и очень удобная программа для чтения различных типов файлов.

Polarity 8.2.4.777

Polarity 8.2.4.777

Polarity - полезный веб-браузер, позволяющий серфить по различным веб-сайтам. Имеет закладки для любимых страниц. Программа основана на движках Trident и Chromium, что обеспечивает быстрый, безопасный веб-серфинг для пользователей. После первого запуска обозревателя, программа предложит выбрать любимую поисковую систему, обеспечивая несколько популярных вариантов. Первоначальные настройки могут быть в дальнейшем изменены как угодно. Инструменты приватности позволяют просматривать любые страницы, не беспокоясь об истории, кэше либо куки-файлах. Вся информация, полученная в этом режиме, удаляется безвозвратно. Веб-обозреватель и.

Читайте также: