Здравствуйте, 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 таги как привязку,
Обе идеи имеют один недостаток: требуют кодирования
Сейчас, очень бы хотелось найти решение позволяющее получить наименьшее сопротивление у команд которые занимаются разработкой различных сторон нашего продукта, таких как разработка аплетов, сервисной части и сайта...