callback вызов из файла.js: везде работает, в IE не работает, а надо!

vitus

мимо проходил
callback вызов из файла.js: везде работает, в IE не работает, а надо!

ситуация следующая:
есть большой файлик со скриптом, подключается тэгом
PHP:
<script src='...'></script>
содержит типа класс.

На странице надо этот класс инициализировать, настроить и вызвать стартовый метод, чтоб заработало.

Обычно инициализацию делаю по таймауту, но случаются ситуации, когда скрипт не успевает долететь до клиента, - соответственно выпадает злобная ошибка и страница вообще не показывается (в IE6 такое бывает).
По перезагрузке работает, однако осадочек у клиента остаётся ...

Попытался настройку сделать в функции на странице и вызывать её из этого большого скрипта, но IE вообще перестал работать :) даже после перезагрузки :)
хотя опера и фф отлично всё обрабатывают. События onload у скрипта нет.

Что делать прям и не знаю.

да, скрипт и страница на разных хостах, если эта информация что-то значит.
 

pilot911

Новичок
вообще решается инициализацией через jquery

<script type="text/javascript">
$(document).ready(function(){
// инициализация
});
</script>
 

vitus

мимо проходил
а без jquery есть варианты? а если jquery не успеет прилететь?
 

dimagolov

Новичок
что за проблема вызов по таймауту зациклить?
PHP:
function TestExternal () {
   if (typeof FuncNameInExternalScript != 'undefined')
      FuncNameInExternalScript();
   else
      setTimeout(TestExternal, 500);
}
TestExternal();
 

vitus

мимо проходил
AmdY
:) сенкз, но не катит к сожалению, вставка должна быть в одном блоке и без изменения поведения всей остальной страницы.

dimagolov
интересно, вариант.
 

akxxiv

Новичок
Автор оригинала: vitus
а без jquery есть варианты? а если jquery не успеет прилететь?
Что значит не успеет??? Засунь подключение jquery в хедер, и он по любому будет загружаться первым... а все остальные функции вызываю уже из $(document).ready()

Ну либо window.onload еще ни кто не отменял....
 

vitus

мимо проходил
akxxiv
То и значит что не успеет, нет у меня доступа хедер править, не на моём сайте мои приложения крутятся, по той-же причине и window.onload - не вариант, если только бубен подходящий найти, чем и занимаюсь.

-~{}~ 07.05.09 16:11:

Да, вот и бубен, оказывается плохо стандарт знаю :(
отчего-то считал что на window эти методы
не распространяются ...

if(window.attachEvent)
window.attachEvent('onload',libInit);
else if(window.addEventListener)
window.addEventListener('load',libInit,false);
else//это уже на всякий случай
window.setTimeout(libInit,5000);

в общем читайте маны - они рулез.
 

x-yuri

Новичок
То и значит что не успеет, нет у меня доступа хедер править, не на моём сайте мои приложения крутятся, по той-же причине и window.onload - не вариант, если только бубен подходящий найти, чем и занимаюсь
ты бы сразу рассказал, что ты делаешь, глядишь и ответ быстрее бы получил :)

Обычно инициализацию делаю по таймауту, но случаются ситуации, когда скрипт не успевает долететь до клиента, - соответственно выпадает злобная ошибка и страница вообще не показывается (в IE6 такое бывает).
По перезагрузке работает, однако осадочек у клиента остаётся ...
скрипт не может не успеть долететь, может разве что измениться порядок расположения скриптов
http://javascript.ru/tutorial/events/timing#vypolnieniie-blokov-javascript
 

vitus

мимо проходил
Верно, это документ не успевает долететь, DOM не сформирован, а я его модифицировать начинаю. И callback поэтому вылетал с ошибкой.

Всем спасибо.
 
Сверху