загрузка Java-апплета при загрузке DOM - PullRequest
1 голос
/ 15 января 2010

Я много искал, но, возможно, я искал неправильные строки. Java-апплет передает живые биты на мои страницы, java-апплет обращается к полям ввода на моей странице и размещает информацию

<input type="hidden" id="F1" value="Nothing Yet">

и затем на странице вызывается функция javascript с именем LivePicker (), а затем он просто получает значение

var ClockVal = document.getElementById("F1").value;
document.getElementById("ICSCLOCK").innerHTML = ClockVal;

Проблема, с которой я сталкиваюсь, заключается в том, что это работает нормально, но иногда в консоли Firebug выдает ошибки, такие как LivePicker не определен, в то время как LivePicker будет работать отлично на странице, в то время как иногда будет выдавать F1, но мои часы не определены. будет работать нормально. Все эти ошибки появляются при загрузке страницы.

Java-апплет размещает данные последовательно, сначала размещает данные, а затем вызывает функцию js для их обработки. Это прекрасно работает на тестовых страницах с минимумом HTML и JS, но когда я интегрирую его в свое приложение, которое использует много компонентов из YUI и много моего собственного кода JS (который теперь явно уменьшен), это выдает эти ошибки. Я хотел бы добавить, что до минимизации эти ошибки были весьма вероятны, но после минимизации JS и CSS время загрузки страницы сокращается вдвое, а появление этих ошибок также уменьшается до половины.

Я подозреваю, что это связано с тем, что при загрузке страницы апплет пытается манипулировать DOM, который еще не готов. Есть ли что-нибудь, что может остановить апплет, чтобы дождаться полной загрузки DOM? Я попробовал window.onload и onDOMReady функцию YUI, они, кажется, не дают никакого эффекта.

Может ли кто-нибудь помочь, пожалуйста?

Ответы [ 3 ]

1 голос
/ 15 января 2010

вы можете попробовать использовать setTimeout для задержки выполнения

https://developer.mozilla.org/en/DOM/window.setTimeout

или библиотека jQuery также может помочь с событием ready для объекта документа

http://docs.jquery.com/Events/ready#fn

0 голосов
/ 10 июня 2010

Эта проблема была решена с использованием предложений dpb немного по-другому. Этот пост в блоге, который я написал, должен объяснить каждый, кто сталкивается с подобной проблемой.

Управление Java-апплетом из Javascript, особенно если вы совершаете обходы веб-страницы из апплета

0 голосов
/ 15 января 2010

Браузер должен отложить выполнение кода window.onload до дерево DOM создается и после того, как все другие внешние ресурсы полностью загружены, и страница отображается в браузере.

Window.onload должен работать. Ваш апплет должен быть запущен до события onload.

В качестве теста вы можете сделать следующее и посмотреть, изменит ли это что-либо:

  • создать на странице скрытое поле «set» со значением «false»;
  • on window.onload установить значение для поля "set" в "true";
  • в вашем апплете проверьте поле "set";
  • только начинают делать вещи в вашем апплете, если поле "set" определено и имеет значение "true";

Еще одна вещь, не занимайте в апплете занятого ожидания, чтобы проверить поле "set". Ваш апплет не должен предпринимать никаких действий, если поле не определено или имеет значение false. При необходимости вы можете активировать его в window.onload.

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