Проблема с выполнением скрипта с задержкой [РЕШЕНО]
Имеется сайт с интегрированным форумом 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, время: 00:20. |