Лучший способ упаковать безголовый браузер?
Я работаю над настольным программным обеспечением для клиента, и я думал о пользовательском интерфейсе, я бы использовал стандартные веб-технологии, такие как HTML5+JS, и планировал просто упаковать безголовую версию современного браузера, такого как Chrome / Firefox, с моим программным обеспечением. Например, это будет просто часть браузера для просмотра страниц / движка рендеринга без границ / меню / вкладок / ярлыков / профилей и т. Д. Что является самым простым способом сделать это независимым от платформы способом. Я знаю, что у Mozilla были такие проекты, как Prism/ Chromeless, но они не обновлялись более года.
9 ответов
Электрон является лучшим для этого в наши дни: http://electron.atom.io/
Рассматривали ли вы язык XUL от Mozilla? Это язык XML, используемый в проектах Mozilla для создания своих пользовательских интерфейсов. Он отображается их движком gecko в автономном Mozilla Xulrunner, который может быть упакован с вашим XML и javascript в исполняемый пакет.
QtWebkit должен быть разумным выбором. Вы можете сделать простое приложение с Qt SDK или QtCreator. Вы можете встроить HTML/CSS/JS в приложение в файле ресурсов Qt. Пожалуйста, проверьте исходный код ниже:
#include <QtGui/QApplication>
#include <QWebView>
#include <QNetworkProxy>
class MainWin : public QWebView
{
public:
explicit MainWin(QWidget * parent = 0) {
m_network = new QNetworkAccessManager(this);
// Setup the network proxy when required!
//m_network->setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, "10.1.1.80", 80));
page()->setNetworkAccessManager(m_network);
// You can use the internal HTML/Javascrip/CSS by
// specify qrc:// URLs refer to resources. See resource.qrc
QUrl startURL = QUrl("http://www.google.com");
// Load web content now!
setUrl(startURL);
}
private:
QNetworkAccessManager * m_network;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWin w;
w.show();
return a.exec();
}
Это рабочий пример с оконной рамой!Он работает как браузер.
Если размер не проблема, вы можете использовать титан с http://www.appcelerator.com/
Он работает практически на каждой платформе. Это то, что они используют для создания Wunderlist. http://www.6wunderkinder.com/wunderlist/
Если вам небезразличен размер, вы можете создать простую оболочку, которая запускает предпочитаемый пользователем браузер без каких-либо элементов управления и панелей инструментов.
Это должен быть один браузер? Подумайте об использовании WebKit на OSX и IE на Windows. Тогда вы можете сделать небольшую оболочку с небольшим интерфейсом. Преимущество заключается в том, что вам не нужно упаковывать свой собственный браузер, а использовать то, что обеспечивает операционная система, что приводит к уменьшению размера программы.
Я думаю, что я бы пошел на Арору в вашем случае. Он не поддерживается с 2010 года, но при условии, что он работает стабильно как есть, у него есть несколько замечательных плюсов:
он работает на внушительном количестве платформ и имеет хорошее соответствие HTML и Javascript, поскольку основан на Webkit. (На каких яблоках построено Safari.) Кроме того, возможно, можно обойти любые незначительные проблемы, поскольку вы, вероятно, разрабатываете свое приложение более или менее с нуля. Преимущество такого подхода, как ваш, заключается также и в том, что вы можете довольно легко заменить в комплекте браузер на что-то другое в будущем, если вам это подойдет.
Или используйте Qt, который очень кроссплатформенный и может также встраивать Webkit.
Я предлагаю Adobe AIR. Я видел, как вы упомянули, что вам не нравятся продукты Adobe и их дорогие IDE. Однако AIR бесплатен, и вы можете использовать любую IDE, которую считаете нужной ( Aptana - хороший выбор, построенный на основе Eclipse).
Я сделал музыкальный проигрыватель с Adobe AIR. Это было около года назад, и с тех пор они выпустили Adobe AIR 3. Полный список функций очень длинный, но, в общем, он поддерживает как обычные функции браузера (JS, Flex и т. Д.), Так и некоторые нативные функции. Например, вы можете просматривать файлы на компьютере или отображать PDF-файлы. Стоит попробовать.
В прошлом я использовал WebKit для этой цели (полагаясь на системный элемент управления WebView в Какао и используя порт Brent Fulgham в Cairo для WebKit для Windows).
Проект WebKit на webkit.org включает этот порт (и Qt, и GTK+, и многие другие).