Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   функция не отрабатывается без alert (https://javascript.ru/forum/dom-window/25751-funkciya-ne-otrabatyvaetsya-bez-alert.html)

StKorf 14.02.2012 13:54

функция не отрабатывается без alert
 
Использую на странице jqgrid
в опере и хроме отражается нормально. в фаерфоксе ругается (фаербаг)
Код:

jQuery("#bigset").jqGrid is not a function
(?)()/monit...events/ (строка 290)
F()jquery.js (строка 19)
$()jquery.js (строка 12)
G = [function(), function()]
K = function()
F = undefined
F()jquery.js (строка 19)
F()jquery.js (строка 19)
[Прерывать на этой ошибке]

НО! как ни странно, если втолкнуть алерт перед вызовом функции то все работает...
т.е. так не работает
$(document).ready(function(){
             jQuery("#bigset").jqGrid({


а если так, то все отображается

$(document).ready(function(){
						alert('f');
             jQuery("#bigset").jqGrid({


подскажите, где я баран?)
да, сетТаймаут ставил, делей ставил, просто вывод чего-то на страницу ставил. работает только если поставить алерт.
но алерт как бы в страницу не вписывается... как можно эту проблему решить?

Rootpassword 14.02.2012 14:37

Алерт у вас останавливает выполнение скрипта , за это время,судя по всему, загрузится что-то, к чему вы обращаетесь. Без алерта у вас на момент обращения что-то не определено, с соответствующими последствиями.

StKorf 14.02.2012 14:41

а как это тогда решить?
setTimeout(jQuery("#bigset").jqGrid({****}),2000);
пробывал. ставил даже до 10 секунд. как бы 0 реакции...

devote 14.02.2012 14:53

Цитата:

Сообщение от StKorf (Сообщение 157372)
а как это тогда решить?
setTimeout(jQuery("#bigset").jqGrid({****}),2000);
пробывал. ставил даже до 10 секунд. как бы 0 реакции...

ну дык и будет ноль реакции, нужно то ставить так:
setTimeout(function(){
    jQuery("#bigset").jqGrid({****});
}, 2000);

А в идеале лучше посмотрите порядок загрузки скриптов, что-то у вас загружается позже чем надо.

Rootpassword 14.02.2012 15:09

Цитата:

Сообщение от StKorf
а как это тогда решить?

таймаут тут - сильное извращение.
ну ловите событие загрузки структуры
http://javascript.ru/tutorial/events/ondomcontentloaded
или onload, если вы там цепляетесь к размерам объектов типа картинок и прочего.

devote 14.02.2012 15:13

Цитата:

Сообщение от Rootpassword (Сообщение 157389)
...
ну ловите событие загрузки структуры
http://javascript.ru/tutorial/events/ondomcontentloaded
или onload, если вы там цепляетесь к размерам объектов типа картинок и прочего.

а он по твоему что делает?
Цитата:

Сообщение от StKorf
$(document).ready(function(){
             jQuery("#bigset").jqGrid({

там дело явно не в этом, возможно какой-то скрипт подгружает еще скрипт уже после вызова ondomcontentloaded

StKorf 14.02.2012 15:15

спс, так таймаут нормально пошел
и все грузится...
нет, там привязки особо никакой нету... была отработка (как писал в первом сообщении) на $(document).ready(function(){
думал, оно будет нормально работать. везде отработало кроме мазилы)
буду капать дальше в чем глюки

еще этот скрипт единственный на всей tpl (есть еще подключение скриптов, но оно производилось выше)
как понимаю надо рытся в родительском шаблоне...

Rootpassword 14.02.2012 15:22

Я же написал-или-или.


Часовой пояс GMT +3, время: 09:42.