Проблема с выполнением скрипта с задержкой [РЕШЕНО]
Имеется сайт с интегрированным форумом PunBB. На сайте подключен jquery, на форум установлен плагин, подключающий jquery и jquery с сайта, т.к. мои скрипты не работают через плагин форума. Также подключен плагин dc-floater, который создает свой div контейнер с содержимым моего контейнера #subscribe:
$(document).ready(function() { $('#subscribe').addClass("display_none"); }); $(document).delay(15000).queue(function() { $('#subscribe').dcFloater({tabText: 'Подпишись!',event: 'click'}); $('.dc-floater .tab').hover( function() { $(this).addClass("tab_focus");} ,function() { $(this).removeClass("tab_focus");} ); }); В этом скрипте после загрузки страницы прячется контейнер #subscribe и через 15 секунд создается контейнер при помощи плагина dc-floater. На сайте все работает отлично, но на форуме в консоли через 15 секунд пишет ошибку: Object has no method dcFloater. Если, например поставить задержку 15милисекунд, то ошибки не будет и контейнер появится. Если отключить форумовский плагин jquery, то все нормально, но не работают скрипты форума. Как я понял, если задержка выполнения скрипта менее времени загрузки страницы, то все проходит отлично, но если задержка больше времени загрузки страницы, то форум как бы вообще прекращает работу всех скриптов и поэтому возникает ошибка. Не подскажете в чем проблема и куда копать? Почему это происходит? Заранее спасибо за ответы |
надеюсь, я правильно поняла суть вопроса.
Можно сделать последовательное выполнение скриптов. Явно указать, что определённый скрипт выполнять только после загрузки другого. Примерно так: var otherscript = document.createElement('script'); otherscript.type = 'text/javascript'; otherscript.async = true; otherscript.src = ('otherscript.js'); document.getElementsByTagName('head')[0].appendChild(otherscript); otherscript.onload = function(){ и тут уже то, что должно выполняться после загрузки otherscript.js } |
Немного не так. Перековырял код форума, нашел вот такой код:
$LAB.setOptions({AlwaysPreserveOrder:false}) .script("http://my-site.net/forum/extensions/pun_jquery/js/jquery-1.7.1.min.js").wait() .script("http://my-site.net/forum/extensions/fancy_jquery_addons/js/fancy_jquery_addons.min.js").wait() Похоже после загрузки страницы никакие скрипты не могут исполняться, кроме указанных. Код добавляется при установке расширений. Скопировал одно из расширений и изменил данные на свои и подключил floater. После установки созданного расширения к вышенаписанному коду добавился вот этот: .script("http://my-site.net/forum/extensions/subscribe/js/jquery.floater.1.2.js").wait(); В результате, все заработало как надо=) |
Часовой пояс GMT +3, время: 17:29. |