Re[6]: Проблема с повторной инициализацией аплета
От: sl.ex Беларусь  
Дата: 30.07.07 09:49
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>1) Покажи JS код. Может там можно переполучить новую ссылку на апплет?


Смотрите test/test.html в: http://files.rsdn.ru/67823/test.zip
JavaScript сам по себе прост:
document.getElementById('myapplet').scriptCalledFunction("Test message to applet");


Я пробовал сохранять ссылку на таг аплета в переменной на уровне документа (IFAME) и на уровне страницы, в которую загружается IFRAME... не помогло.


B>2) Проверь поведение на разных браузерах. Так можно локализовать проблему либо это браузер либо Java-Plug-in

В FireFox аплет пересоздается, но, в отличии от IE, JavaScript работает нормально — вызываются функции нового аплета. Вполне возможно, что это IE баг, однако, не понятно почему JVM старается пересоздать аплет вместо того чтобы остановить его сначала (stop) а потом запустить (start).
Постараюсь разузнать на форумах microsoft'а про IE.

B>3) В качестве хака можно попробовать все переписать на статические методы. То есть все методы апплета тупо делегируют все вызовы статическим методам. А состояние хранится в статических полях. хотя методы в принципе все равно какие. Главное поля в статические переделать. Тогда у тебя состояние не будет пропадать. Так как оно хранится на уровне классов. А загрузчик классов у тебя судя по логам не меняется. Но надо быть осторожным, тут могут быть и последствия, когда апплет будет загружен заново в том же окне, Java Plug-in не будет уничтожать старый загрузчик. И в результате апплет сразу загрузится в предыдущем состоянии.


Спасибо!
Да, так можно сделать, но тогда придется сделать чтото вроде Hastable или Map в котором бы хранились состояния апплетов. Потому что на странице может быть загружено несколько одинаковых аплетов и их всех както пирдется отличать... причем для каждого аплета придется делать похожий трюк.

Еще одна идея состоит в том, чтобы перемещать IFRAME не между тагами, а используя абсолютное позиционирование и DIV таги как привязку,

Обе идеи имеют один недостаток: требуют кодирования
Сейчас, очень бы хотелось найти решение позволяющее получить наименьшее сопротивление у команд которые занимаются разработкой различных сторон нашего продукта, таких как разработка аплетов, сервисной части и сайта...
ICQ: 241785166
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.