Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Запуск скрипта через 5 секунд (https://javascript.ru/forum/events/35546-zapusk-skripta-cherez-5-sekund.html)

Marakaya 14.02.2013 12:37

Запуск скрипта через 5 секунд
 
Доброго времен, уважаемые форумчане. Помогите пожалуйста мне по такому вопросу. Есть скрипт слайдера, который я подцепляю внизу страницы, который нужен для работы слайдера(хотя это и есть сам слайдер). Как сделать чтобы он подгрузился не сразу, а через 5 секунд?

Вот две строки кода:
<script type="text/javascript" src="engine1/wowslider.js"></script>
<script type="text/javascript" src="engine1/script.js"></script>

DjDiablo 14.02.2013 13:02

скорее всего вам ненужна задержка по времени, я предполагаю что вы таким образом готовности чего то пытаетесь дождаться. В таких случаях запуск должен происходить тогда когда всё готово для запуска, а не через жёстко заданный интервал времени. Это значит что задержка по времени будет худшим из возможных решений.

Собственно по задержке.

пример 1) отложенная загрузка скрипта
<script type="text/javascript" src="engine1/script.js"></script>

пишем
<script>
    setTimeout(function(){
        $.getScript("engine1/script.js");
    },5000)
</script>


пример2) отложенная инициализация.
//в скрипте должна быть прописана какаято функция которую можно вызвать и этот вызов считается запуском 
<script type="text/javascript" src="engine1/script.js"></script>
<script>
    setTimeout(function(){
       myFunction();//вызов функции из скрипта.
    },5000)
</script>

danik.js 14.02.2013 13:04

Вам помогут:
window.setTimeout( .. )
document.createElement('script')
document.body.appendChild( .. )

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

danik.js 14.02.2013 13:08

Опоздал )
DjDiablo, а что не так со вторым способом?

Marakaya 14.02.2013 13:14

Вложений: 1
Попробовал вариант, за который нужно убивать, ничего не вышло, слайдер не запустился. Вообще запускать этот слайдер нужно после того, как пройдет флеш заставка, так как работаю вместе флеш просто ужасно тормозит. А если слайдер не работает - лагов нет. Думаю лучше будет в конце из флеша включить функцию запуска слайдера, но как этот слайдер оформить в одну функцию, я пока не умею. Если есть свободно время - гляньте пожалуйста код этих двух скриптов.
Пы.Сы. не предлагайте использовать другой слайдер :no: С таким эффектом я нашел только этот...

Marakaya 14.02.2013 13:22

В конце флешки у меня стоит вызов функции
getUrl("javascript:closeblock();"

Функция эта убирает флешку, как я понимаю, перед ней нужно воткнуть функцию запуска слайдера...а как эту функцию сделать ?)

DjDiablo 14.02.2013 13:50

Цитата:

а что не так со вторым способом?
Он не к месту если нужно чего то дождаться, к примеру загрузки чего нибудь. Так как таймер может сработать либо раньше подходящего момента, либо наоборот позже.

Цитата:

getUrl("javascript:closeblock();")
ай да молодца, это единственное правильное решение.

если closeblock это функция в каком то скрипте, а я уверен что это так. То вызове вместо него какойнибудь onStart();

getUrl("javascript:onStart();
function onStart(){
  closeblock();
  alert('привет я onStart');
  //а тут мы запустим слайдер 
}


Цитата:

Попробовал вариант, за который нужно убивать, ничего не вышло, слайдер не запустился
Это лиш пример отложенной загрузки скрипта, как он должен выглядеть именно в вашей ситуации нужно понять самому.

Marakaya 14.02.2013 13:57

Блин, проблема в том, что флешка проигрывается один раз в одной сессии, а если человек зайдет на страницу со слайдером с другой страницы, в рамках одно сессии то он не увидит рабочего слайда, так как 2 скрипта не подгрузятся без проигрывания флешки, которая, проигрывается лишь раз) Как то всё запутано написал). Короче, привязывать функцию с флешкой нельзя, нужно просто включить её на сайте через время, лучше уж пусть она работать начнет немного раньше, до закрытия флешки, чем будет работать всё время заставки. Подскажите как просто добавить 2 куска этого кода через N секунд...

Marakaya 14.02.2013 14:01

Цитата:

Сообщение от danik.js (Сообщение 233878)
Вам помогут:
window.setTimeout( .. )
document.createElement('script')
document.body.appendChild( .. )

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

Я ещё не дошел до синтаксиса javascript'а, подскажите как в эту конструкцию ставить <script type="text/javascript" src="engine1/wowslider.js"></script>

DjDiablo 14.02.2013 14:04

дак ведь показали уже
alert("закройте меня и следующий alert увидите только через 5 секунд");
 setTimeout(function(){
     alert("5 секунд прошло" );
},5000)


впрочем я смотрю в js вы не бум бум.
А слайдер конструктором сделали да ? http://wowslider.com/

Marakaya 14.02.2013 14:12

Цитата:

Сообщение от DjDiablo (Сообщение 233924)
дак ведь показали уже
alert("закройте меня и следующий alert увидите только через 5 секунд");
 setTimeout(function(){
     alert("5 секунд прошло" );
},5000)


впрочем я смотрю в js вы не бум бум.
А слайдер конструктором сделали да ? http://wowslider.com/

Я же писал, JS я вообще ещё не бумбум, слайдер сделал конструктором.

DjDiablo 14.02.2013 14:21

сделайте так чтобы внутри script.js получилось
setTimeout(function(){
// здесь старое содержимое script.js
},5000)


тоесть оберните содержимое script.js функцией setTimeout

И ещё один добрый совет, никогда не используйте генераторы плагинов, плагин должен настраиваться ручками и не как иначе. Сгенерированный плагин вас всегда будет ставить раком, так же как сейчас. Это для лохов решение.

Marakaya 14.02.2013 14:35

Цитата:

Сообщение от DjDiablo (Сообщение 233933)
сделайте так чтобы внутри script.js получилось
setTimeout(function(){
// здесь старое содержимое script.js
},5000)


тоесть оберните содержимое script.js функцией setTimeout

И ещё один добрый совет, никогда не используйте генераторы плагинов, плагин должен настраиваться ручками и не как иначе. Сгенерированный плагин вас всегда будет ставить раком, так же как сейчас. Это для лохов решение.

Ну пока я в JS лох, поэтому не могу написать свой слайдер, в скором времени напишу и свой. А пока... :(
Обернул весь код в таймаут, не вышло. Слайдер не работает так.
Попробовал другой вариант.

<div id="script_place">
<script>
window.setTimeout('5000')
var js=document.createElement('SCRIPT')
js.text='document.write("<script type="text/javascript" src="engine1/wowslider.js"></script><script type="text/javascript" src="engine1/script.js"></script>")'
document.getElementById('script_place').appendChild(js)
</script>
</div>


Тоже не помогло (

DjDiablo 14.02.2013 14:44

а вам неприходило в голову что вы написать могли неправильно :D

Marakaya 14.02.2013 14:55

Приходило, но вот где я ошибся не пойму, после window.setTimeout('5000') должна стоять или круглая или фигурная скобка?

KomatoZ 03.05.2013 00:17

<div id="script_place">
	<script>
		var js = window.document.createElement ("SCRIPT");
		js.type = "text\/javascript";
		js.src = "engine1\/wowslider.js";
		window.setTimeout (function () {window.document.body.appendChild (js);}, 5000);
	</script>
</div>

ruslan_mart 03.05.2013 16:14

А что, так нельзя?
setTimeout(function()
{
   document.write('<script type="text/javascript" src="engine1/script.js"></script>');
},3000);

dmitriymar 03.05.2013 16:33

Цитата:

Сообщение от Ruslan_xDD
А что, так нельзя?
1 setTimeout(function()
2 {
3 document.write('<script type="text/javascript" src="engine1/script.js"></script>');
4 },3000);

Нет конечно . Если document.write после анализа выполнится -он затрет всё

KomatoZ 06.05.2013 03:29

можно так:
<div id="script_place">
	<script>
		window.setTimeout (function () {window.document.getElementById ("script_place").innerHTML = "<script type=\"text\/javascript\" src=\"engine1\/script.js\"><\/script>";}, 5000);
	</script>
</div>


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