LINUX.ORG.RU
ФорумTalks

Браузер встраиваемый в приложение. Шел 2015й год.

 ,


0

2

Сабж. И до сих пор нету стандартного способа встрить браузер по-умолчанию, установленный в системе, в мое приложение. И это при том, что систем без браузеров не существует, а стандарнтое API до сих пор не запилили в браузерах.

В то же время у микрософта своё «стандартное» (в том смысле, что на любой венде работает) API уже 20 лет как в венде, пусть только для IE, но оно работает и удобное. (И не надо тащить за собой 40-60 метров движка, как в случае с geckofx или webkit'ом (Зачем тащить вобще - не ясно, ведь уже есть браузер в системе, нужно только универсальное API).

upd: доходит даже до такого проприетарного маразма: http://www.awesomium.com/

★★★★★

Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от upcFrost

Под вендой встраивался всегда IE и оно там всегда было... но mozilla и webkit ничего стандартного не предоставяют. Есть всякие недо-поделки или проприетарщина. А так чтобы это было фичей браузера - хрен!

invy ★★★★★
() автор топика

лол, вызывай системный браузер из приложения - в чем проблема?

в нормальных DE есть переменная, определяющая дефолтный браузер

smilessss ★★★★★
()
Ответ на: комментарий от smilessss

Я так понял, что дело не в «ссылку открыть», а «страничку показать». Типа сообщений в sfx-архивах того же winrar. Там используется двигло IE.

Radjah ★★★★★
()

до сих пор нету стандартного способа встрить браузер по-умолчанию, установленный в системе, в мое приложение

Наверное оно и к лучшему.

PolarFox ★★★★★
()
Ответ на: комментарий от smilessss

Я его не «вызывать» хочу, а встраивать его в свое приложение, манипуляции с HTML документом делать (получать доступ в DOM), отлавливать ивенты (клики на ссылки) и прочее.

invy ★★★★★
() автор топика
Последнее исправление: invy (всего исправлений: 1)

В то же время у микрософта своё «стандартное» (в том смысле, что на любой венде работает) API

У меня браузером по умолчанию в Windows стоит Chrome. Дай пример кода на этом API, который встраивает Chrome.

i-rinat ★★★★★
()

Такого нет и не будет в ОС Ubuntu, ОС Debian GNU/Linux и прочих сходных. Потому, что дефолтный браузер в любой из них может поменяться когда угодно. И его пилят не разработчики ОС. А разработчикам браузеров побоку, что там происходит в этом зоопарке. Тем более они не будут поддерживать один LTS для убунты и другой — для дебианов.

Пока в линуксах нет стандартной платформы «линукс-десктоп» (пофиг, KDE, Gnome, Unity или какой) — никакого встраиваемого браузера под эту платформу не будет. Как будет она реализована — побоку, хоть так.

x3al ★★★★★
()

Мог бы и пошире дырень в безопасности придумать.

Kor03d ★★
()

Хм, интересно, а есть ли вообще генерик-вэй для отрисовки чужих приложений? Ну, типа mplayer -wid <window_id>, только чтобы работало со всеми приложениями.

Пока нагуглился только https://en.wikipedia.org/wiki/XEmbed который не совсем то.

Есть ещё вот это: http://doc.qt.io/qt-4.8/qx11embedcontainer.html#details

true_admin ★★★★★
()

В венде только IE встроить можно. Да и не браузер, а двиг. А так - встраивай тот же webkit в своё приложения.

BeerSeller ★★★★
()
Ответ на: комментарий от x3al

В общем — жуй то, что в твоём тулките — webkit, gtkhtml или что там есть. Оно хуже, чем API IE, но этим хотя бы можно пользоваться.

x3al ★★★★★
()
Ответ на: комментарий от i-rinat

Там «стандартное» и свое - ключевые слова. Chrome конечно нельзя, НО вот это как раз и хочется! Т.е. чтобы Chrome, например, имплементировал IWebBrowser2...

invy ★★★★★
() автор топика
Ответ на: комментарий от UVV

Проблема в том, что его ндао за собой таскать. Я, когда встраиваю браузер, не хочу вообще знать, какой движок в системе, а хочу только использовать некое стандартное API.

invy ★★★★★
() автор топика
Ответ на: комментарий от x3al

Для этого нужен стандарт, который бы все уважающие себя браузеры реализовывали и предоставляли своё API. Это зависит по большому счету только от разработчиков браузеров.

invy ★★★★★
() автор топика
Ответ на: комментарий от invy

Там «стандартное» и свое - ключевые слова.

Не-не. Ты сказал

И до сих пор нету стандартного способа встрить браузер по-умолчанию, установленный в системе, в мое приложение.

Когда у меня какое-нибудь приложение пытается ShellExecute'нуть ссылку, открывается Chrome. Это и значит «по умолчанию». И Chrome встроить так нельзя.

i-rinat ★★★★★
()
Ответ на: комментарий от invy

Не цепляйся к словам

Мы на Linux.Org.Ru. Тут такая традиция — цепляться к словам и вбрасывать на вентилятор.

Конечно я понял, что ты имел в виду. Как и ещё десятка два людей, которые прочитали заглавное сообщение, хмыкнули про себя: «ну да, есть такая неприятность», и прошли мимо, ничего не написав. Потому что по теме тут, в общем-то, говорить нечего.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от invy

Ты ж Qt таскаешь в любом случае, в чём проблема?

И вообще, 60 метров сейчас — мелочи.

Для этого нужен стандарт, который бы все уважающие себя браузеры реализовывали и предоставляли своё API.

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

x3al ★★★★★
()
Ответ на: комментарий от UVV

webkit и есть браузер

Deprecated, только WebEngine, только хардкор.

Suigintou ★★★★★
()

Шел 2015й год.

А умляут над «e» так и не пропечатывался.

Suigintou ★★★★★
()

А может лучше сделать человеческий WebUI?

StReLoK ☆☆
()
Ответ на: комментарий от invy

Я его не «вызывать» хочу, а встраивать его в свое приложение, манипуляции с HTML документом делать (получать доступ в DOM), отлавливать ивенты (клики на ссылки) и прочее.

Сделай как все нормальные люди отдельно серверную часть с вебсервером. Клиенту же дай ссылку типа localhost:631. Либо execve(«sensible-browser http://localhost:6666")

true_admin ★★★★★
()

Пятница только завтра.

Deleted
()

а где гарантия что в системе есть графический браузер? а где гарантия что у него будут нужные функции?

//субж

Thero ★★★★★
()

не надо тащить за собой 40-60 метров движка
Зачем тащить вобще, нужно только универсальное API

Только вместо движка тащить за собой целый браузер. Или ты хочешь типа такого:

#ifdef CHROMIUM
// 9000 строк кода
#elif FIREFOX
// 9000 строк кода
...
#endif

Unicode4all ★★★★★
()

mam динамическая линковка, зависимости

der_looser ★★
()
Ответ на: комментарий от invy

mozilla и webkit ничего стандартного не предоставяют

«Стандартного» - это «общего»? Не предоставляют. Как и на венде.

Но, возможно, стандартным будет CEF.

tailgunner ★★★★★
()

В Qt есть браузер.

Zhbert ★★★★★
()
Ответ на: комментарий от Harald

Ну да. Кому нужен десктоп без браузера? (и любимой социалочкиlor'а)

invy ★★★★★
() автор топика
Ответ на: комментарий от Unicode4all

Нет, я хочу что-то типа: При этом обязательное условие: не тащить за собой ни движков браузера ничего, System.Browser.getBrowser() должно использовать установленный в системе браузер, совместимый с неким стандартом.

// pswudocode

class Window {
// controls
   IWebBrowser browser;
   // ... other controls
   void init() {
       browser = System.WebBrowser.getBrowser();
       if(!browser) throw NoSupportedBrowserException();
   }
   // event:
   void OnNavigateComplete(string url) {
      auto doc = browser.getDocument();
      doc.findByXpath("...");
      ...
   }
};

invy ★★★★★
() автор топика
Ответ на: комментарий от Harald

да ну?

Ну если ТС пишет что-то, что требует браузерный функционал, то скорее всего оно нужно только на системах, где браузер в стандартной поставке.

Только зачем я капитаню? Ты и так все знаешь.

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от dogbert

Не кроссплатформенно.

invy ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Но, возможно, стандартным будет CEF.

О, интересно!

invy ★★★★★
() автор топика

И не надо тащить за собой 40-60 метров движка

не тащи, используй устаовленную в системе библиотеку

cvs-255 ★★★★★
()

Теперь всё наоборот: твоё приложение встраивается в браузер. Браузер – центр мира.

Deleted
()
Ответ на: комментарий от true_admin

Почему же? html - определенный формат, который иногда надо показывать именно в своем приложении.

invy ★★★★★
() автор топика
Ответ на: комментарий от buddhist

И чтобы задеплоить его где-то на другой OS, надо тащить за собой жирную библиотеку.

Я считаю это нерациональным, т.к. браузер давно по стал неотъемлемой частью десктопа. Ты же не таскаешь за собой в каждом приложении имплементацию libc, грубо говоря?

invy ★★★★★
() автор топика
Последнее исправление: invy (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.