Как стать автором
Обновить

Комментарии 20

Хотя нет, слишком уж навороченно получается если данные еще и на серверную часть передавать. Этот метод подойдет если в проекте уже ипользуется GWT.
Господи. GWT-то тут причем? Он тут ничем не поможет.

Автор, я так понял, решает проблему взаимодействия Standalone Java Application и HTML-страницы, открытой в браузере, встроенном в его приложение.

Честно говоря, за изложение материала хочется поставить двойку. Даже просто за заголовок. Абсолютно неинформативно.
Да-да. Извиняюсь, я на автомате ответил, этот GWT мне уже все мозги проел :(
Жаль, что мессагу удалить нельзя.
23.3. Взаимодействие с JavaScriptсценариями из Java

Любое взаимодействие Java с JavaScriptсценарием осуществляется через экземпляр класса netscape.javascript.JSObject.
«JavaScript. Подробное руководство, 5-е издание — Флэнаган Д. 2008»

Насколько я понимаю это оно? В книге есть примеры и полное описание объекта (также рассказано и взаимодействие в обратном направлении).
Плюсую. Пользуюсь этим и всё отлично работает, в обе стороны.
LiveConnect это называется. Осталось только в Gecko, и то обещают выпилить в скорейшем времени.
Ну почему-же только в Gecko. В IE работает, а мне это собственно говоря только в IE и надо.
Ого, я не знал, что LiveConnect в IE работает. А с какой версии?
Ну я тестил начиная с IE6. Но вот тут пишут:
Internet Explorer: Java Plug-in provides full support of JSObject in IE 3/4 by accessing the DOM through COM.
Возможно по ссылкам выше уже описано такое решение: использовать в клиенте встроенный в JRE http-сервер (com.sun.net.httpserver.HttpServer).
Тогда можно будет очевидным образом взаимодействовать со страницы браузера с приложением.
Плюсы такого решения: всё достаточно «очевидно» в том смысле что нет черной магии JS с изменением статуса а потом чтением этого статуса и нет BrowserFunction. Если есть ForntEnd разработчик — он может ваять свои интерфейсы и взаимодействие привычным и понятным способом. Это становится особенно важным когда взаимодействие становится сложней чем просто передать содержимое поля.

Мне кажется для десктопного прилежения на SWt как раз более муторным будет устраивать взаимодействие через httpServer. Спрашивается зачем? KISS никто не отменял :)
KISS как раз будет со встроенным http-сервером)
Есть html страница в браузере. Её делают те кто в этом хорошо понимает и взаимодействуют привычным образом.
Использование стандартных вещей (status/title) нестандартным образом на KISS (который «никто не отменял») никак не тянет :)
Да что CustomFunction == KISS — тоже ниоткуда не следует
При двух одновременно запущенных экземплярах программы редакторы одновременно работают?
Приложения Standalone. Поэтому запустив 2 экземпляра, в получаете 2 отдельных приложения, в каждом из которых запущен свой instance браузера. соответственно данные не являются общими, и callback функции выполняются отдельно в каждом браузере. Если даже одноврменно редактировать один и тот же файл в каждом из двух приложений (ну при условии отсутсвия лока на файл)
Извиняюсь, что так не скоро отвечаю :)
Просто у Java был наследный баг со встроенным браузером — на все приложения Java запускался единственный его экземпляр. В приницпе, казалось бы, ничего страшного — фактически один экземполяр, у которого открыты разные вкладки, но на практике вылазило множество побочных эффектов. По крайней мере под Windows было именно так. Потому и интересно насколько хорошо работают два запущенные приложения в данном случае.
Я тоже красавец с ответом =)

Ммм… не уверен по поводу баги. У меня в моём приложении 4 виджета браузера. Запустил парочку инстансов, все диалоги с браузерами пооткрывал. Логика моего приложения работает без сбоев.
Кроме всего прочего, один и тот же диалог с браузером запущен был несколько раз. Всё нормально отработало, нигде ничего не было нарушено. (Это в контексте одной jvm)

А 2 приложения запускаются в разных jvm ещё помоему, так что инстансы браузера явно не могут перекрываться.
Большое спасибо. А то, я как два года назад на эти грабли напоролся, так с тех пор и боюсь браузеры для пользовательского интерфейса в Java использовать.
Могу развить вам новую параною =)
Вот столкнулся недельку назад. Ситуация какая. Есть BrowserFunction. Я ей передаю в аргументы htm из jquery. Так вот, если браузер подтянет не вебкит или дефолтный браузер, а мозиллу, то в java передастся голый текст без html. для Webkit браузера и ИЕ (на винде) всё отлично возвращается HTML. Для 5го фф вернётся хтмл без хтмл =) по сути результат выполнения $.text()... Побороть не смог, буду сажать своих пользователей на хром
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Публикации

Истории