Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > document.createElement - и падения браузера


Автор: transdim 28.3.2006, 15:54
делаю:
el=document.createElement('DIV');
иногда падает бразузер, выдаёт вообще типа "узел не найден"... вообщем какая-то фатальная ошибка

есть ли какие-нибудь ограничения или условия на использование этой функции?
вообще я обращаюсь к функции с помощью setTimeout спустя 1000 мс после загрузки страницы
Добавлено @ 16:01
в MSDN ничего вразумительно по правилам использования не нашёл... пока что пытаюсь бороться с этим с помощью бубна smile

Автор: Merk 28.3.2006, 16:25
Я создавал и дивы, и инпуты, и таблицы таким способом, ни каких проблем не встречал.

Автор: S.A.P. 28.3.2006, 16:36
transdim, может ты пытаешься это сделать до полной загрузки страницы?

Автор: transdim 28.3.2006, 16:39
у меня вызов функции, которая создаёт элементы организован вот так:
Код

<script>window.setTimeout("st_CreateFixation('table_st_21558339', 1, 0, 0, '')",1000);</SCRIPT>
<script>window.setTimeout("st_CreateFixation('table_st_21558340', 1, 0, 0, '')",1500);</SCRIPT>
<script>window.setTimeout("st_CreateFixation('table_st_21558341', 1, 0, 0, '')",2000);</SCRIPT>

т.е. по идее я так понимаю это происходит ТОЧНО ПОСЛЕ ЗАГРУЗКИ, или я ошибаюсь?

Автор: Ciber SLasH 28.3.2006, 16:46
Цитата(transdim @ 28.3.2006, 17:39 Найти цитируемый пост)
это происходит ТОЧНО ПОСЛЕ ЗАГРУЗКИ, или я ошибаюсь?

Смотря где это находится. Если после <BODY>, то да, иначе — нет.

Автор: transdim 28.3.2006, 16:52
А как можно заставить скрипт выполниться после загрузки документа? Просто у меня иногда нет возможности вызывать его после </BODY>. Я думал что setTimeout начинает свой отчёт именно после загрузки документа, где бы он небыл вызван в коде.

Автор: Merk 28.3.2006, 16:55
Создай функцию и вызови её в онлоад у боди smile

Автор: Ciber SLasH 28.3.2006, 16:59
Цитата(transdim @ 28.3.2006, 17:52 Найти цитируемый пост)
А как можно заставить скрипт выполниться после загрузки документа?

Можно ещё прописать функцию на загрузку:
Код

onload = function () {
  // нужные действия
}

Автор: transdim 28.3.2006, 17:19
А можно как нибудь сделать наследование всего того что в onload запускалось до меня, т.к. каких-то скриптов запускается куча, и я боюсь что-нибудь поламать своим неловким window.onload=myFunc.
Код

function myFunc() {
  inherited;
  st_CreateFixation('table_st_21558339', 1, 0, 0, '');
  st_CreateFixation('table_st_21558340', 1, 0, 0, '');
  st_CreateFixation('table_st_21558341', 1, 0, 0, '');
}


Автор: S.A.P. 28.3.2006, 17:23
Код

function addLoadEvent(func)
{
    var oldonload = window.onload;
    if (typeof window.onload != 'function'){
     window.onload = func;
    } else {
        window.onload = function(){
        oldonload();
        func();
        }
    }
}

function myFunc() {
  st_CreateFixation('table_st_21558339', 1, 0, 0, '');
  st_CreateFixation('table_st_21558340', 1, 0, 0, '');
  st_CreateFixation('table_st_21558341', 1, 0, 0, '');
}

addLoadEvent(myFunc);


Автор: Ciber SLasH 28.3.2006, 17:26
Цитата(transdim @ 28.3.2006, 18:19 Найти цитируемый пост)
А можно как нибудь сделать наследование всего того что в onload

Можно:
Код

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

// Твоя функция
function MyFunc() { alert('Hi') }

// Вызов
addLoadEvent(MyFunc());

Источник: http://simon.incutio.com/code/js/addloadevent/

Автор: transdim 28.3.2006, 17:55
ок, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)