Уважаемые, подскажите, пожалуйста, возможно ли в апплете поймать событие, что в браузере нажали кнопку, например, "Предыдущая" и ушли на другую страницу?
Более подробно проблема:
Апплет подключен по TCP к серверу. Если в браузере нажать "Назад" и загрузить еще раз апплет, получается два инстанса апплета, два активных коннекта. Что плохо.
Надо как-то отслеживать, что ушли со страницы с первым апплетом и в этот момент принудительно разорвать TCP-коннект. И если загрузят второй раз инстанс апплета, то лишь он будет активным. Т.е. задача, чтоб был один активный апплет, от одног окна браузера.
Возможно ли это в принципе, или я что-то неправильно сархитекурничал?
Здравствуйте, Евгений Чернов, Вы писали:
ЕЧ>Уважаемые, подскажите, пожалуйста, возможно ли в апплете поймать событие, что в браузере нажали кнопку, например, "Предыдущая" и ушли на другую страницу?
В апплете, думаю, нет.
ЕЧ>Более подробно проблема: ЕЧ>Апплет подключен по TCP к серверу. Если в браузере нажать "Назад" и загрузить еще раз апплет, получается два инстанса апплета, два активных коннекта. Что плохо.
Два инстанса апплета? Может, все таки один, просто инициализация не там стоит (например, в start() ) и получается что она была вызвана 2 раза?
Попробуй так: в init() подготавливаем всякие данные, но коннект не устанавливаем. В start() устанавливаем коннект, в stop() тушим.
ЕЧ>Надо как-то отслеживать, что ушли со страницы с первым апплетом и в этот момент принудительно разорвать TCP-коннект.
start(), stop().
ЕЧ>И если загрузят второй раз инстанс апплета, то лишь он будет активным. Т.е. задача, чтоб был один активный апплет, от одног окна браузера. ЕЧ>Возможно ли это в принципе, или я что-то неправильно сархитекурничал?
Посмотри в сторону Java Web Start. Это гораздо лучше чем апплет. Никаких тебе ограничений веб страницы, start(), stop().
Здравствуйте, Antei, Вы писали:
A>Здравствуйте, Евгений Чернов, Вы писали:
ЕЧ>>Уважаемые, подскажите, пожалуйста, возможно ли в апплете поймать событие, что в браузере нажали кнопку, например, "Предыдущая" и ушли на другую страницу? A>В апплете, думаю, нет.
В смысле — отловить нажатие кнопок браузера. Зато можно поймать stop(), start().
Здравствуйте, Antei, Вы писали:
A>Здравствуйте, Antei, Вы писали:
A>>Здравствуйте, Евгений Чернов, Вы писали:
ЕЧ>>>Уважаемые, подскажите, пожалуйста, возможно ли в апплете поймать событие, что в браузере нажали кнопку, например, "Предыдущая" и ушли на другую страницу? A>>В апплете, думаю, нет. A>В смысле — отловить нажатие кнопок браузера. Зато можно поймать stop(), start().
Уже копал в эту сторону. В том-то и фишка. Что start() и stop() не вызываются!!
Такое ощущение будто апплет работаем в бэкграунде браузера и даже не понимает, что его уже давно не отображают.
Здравствуйте, Antei, Вы писали:
A>Посмотри в сторону Java Web Start. Это гораздо лучше чем апплет. Никаких тебе ограничений веб страницы, start(), stop().
Спасибо за советы.
WebStart не подходит, тогда придется архитектуру всю переделывать, а во-вторых убьются преимущества апплета, что из любой ОС, из любого браузера, ничего не качая зашел и апплет работает
Re[3]: Апплет. Как поймать событие?
От:
Аноним
Дата:
24.05.07 12:57
Оценка:
Здравствуйте, Евгений Чернов, Вы писали:
, а во-вторых убьются преимущества апплета, что из любой ОС, из любого браузера, ничего не качая зашел и апплет работает
Нет уже давно этого преимущества. java — плагин надо качать, если он не предустановлен производителем компьютера (Dell ставит) и если компьютер не Mac. И вообще смешивать несколько технологий (html + applet, а некоторые еще и взаимодействие javascript с апплетом делают) на мой взгляд неправильно. Пользователь одновременно может работать с другими сайтами и другими апплетами. Каша. Если апплет, то только апплет и открывается он в отдельном окне без кнопок вперед-назад, а родительское окно браузера лучше закрыть. Но тогда webstart даже лучше, потому что не связан с браузером.
Здравствуйте, Евгений Чернов, Вы писали:
ЕЧ>Здравствуйте, Antei, Вы писали:
A>>Посмотри в сторону Java Web Start. Это гораздо лучше чем апплет. Никаких тебе ограничений веб страницы, start(), stop().
ЕЧ>Спасибо за советы. ЕЧ>WebStart не подходит, тогда придется архитектуру всю переделывать, а во-вторых убьются преимущества апплета, что из любой ОС, из любого браузера, ничего не качая зашел и апплет работает
Преимуществ у апплета перед JWS — нету, как раз наоборот.
Переделок при переходе — реально немного. Вместо апплета в HTML странице ставится линк на *.jnlp файл. Файл можно отдавать своим сервлетом, через него же передаем параметры со страницы. Грузится файл, открывается окно приложения. Все.
Что для апплета, что для JWS пользователю нужно иметь установленный Java Plugin. В случае JWS нужно чтобы был он был установлен в системе (для открытия jnlp файлов). Но JWS давно инсталлируется вместе с JRE, не помню с какой уж версии.
A>Преимуществ у апплета перед JWS — нету, как раз наоборот.
Одно из преимуществ JWS перед апплетами в том, что в JWS есть возможность задавать параметры виртуальной машины — память, например. У апплета — нельзя!
Здравствуйте, Евгений Чернов, Вы писали:
A>>В смысле — отловить нажатие кнопок браузера. Зато можно поймать stop(), start().
ЕЧ>Уже копал в эту сторону. В том-то и фишка. Что start() и stop() не вызываются!! ЕЧ>Такое ощущение будто апплет работаем в бэкграунде браузера и даже не понимает, что его уже давно не отображают.
__________________________________
Поправляюсь. Провел более чистый эксперимент.
start(), stop() действительно ловятся!
Кроме того и init с destroy() тоже сразу же вызываеются при переходе по кнопка вперед, назад.
А ложное ощущение у меня было, т.к. внешний вид апплета оставался одним и тем же — так это у меня start() отрабатывало одинаково. Стоило лишь поменять что-то внешне на апплете, после НАЗАД, ВПЕРЕД на браузере, все заново застрартилось.
Здравствуйте, Antei, Вы писали:
A>Что для апплета, что для JWS пользователю нужно иметь установленный Java Plugin. В случае JWS нужно чтобы был он был установлен в системе (для открытия jnlp файлов). Но JWS давно инсталлируется вместе с JRE, не помню с какой уж версии.
Во!! У рядового пользователя который тыкнулся в браузер не откроется.
А апплет откроется, т.к. Java-машина по-умолчанию ставится точно на винду как минимум.
Здравствуйте, mselez, Вы писали:
M>Здравствуйте, Antei, Вы писали:
A>>Преимуществ у апплета перед JWS — нету, как раз наоборот.
M>Одно из преимуществ JWS перед апплетами в том, что в JWS есть возможность задавать параметры виртуальной машины — память, например. У апплета — нельзя!
Это специфическая задача. Для большинства апплетов оно не надо IMHO
Hello, Евгений Чернов!
You wrote on Fri, 25 May 2007 06:03:15 GMT:
ЕЧ> А апплет откроется, т.к. Java-машина по-умолчанию ставится точно ЕЧ> на винду как минимум.
Это уже не так. JVM от MS удаляется из системы при установке первого сервис-пака к Windows XP. В Висте ее тоже разумеется нет. Собственно, MSJVM заканчивает свою жизнь в конце этого года — Microsoft Java Virtual Machine Support