Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как отложить синтаксический анализ javascript? (https://javascript.ru/forum/css-html/30529-kak-otlozhit-sintaksicheskijj-analiz-javascript.html)

Ingiborn 07.08.2012 16:18

Как отложить синтаксический анализ javascript?
 
Здравствуйте.
Помогите решить проблему.
Требуется отложить загрузку javascript..
Допустим, у меня 7 файлов javascript, загружаемых последовательно, требуется эти файлы загрузить после того, как загрузиться страница, или же, через указанное мною время, очень надо!
СПАСИБО ЗАРАНЕЕ!!

Deff 07.08.2012 16:25

Цитата:

Сообщение от Ingiborn
Допустим, у меня 7 файлов javascript, загружаемых последовательно, требуется эти файлы загрузить после того, как загрузиться страница, или же, через указанное мною время, очень надо!
СПАСИБО ЗАРАНЕЕ!!

Если на JQ
то так
$(window).load(function () {
  $.getScript("test1.js")
  $.getScript("test2.js")
  $.getScript("test3.js")
  $.getScript("test4.js")
  $.getScript("test5.js")
  $.getScript("test6.js")
  $.getScript("test7.js")
});

Есть еще Гугол API - таким жа макаром грузит

Ingiborn 07.08.2012 18:08

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

Ingiborn 08.08.2012 13:03

Помогите, перестаю работать работать скрипты, слайдера

Deff 08.08.2012 14:34

Ingiborn,
В Конец страницы
<script type="text/javascript">

Link=[];
Link[0]='test1.js';
Link[1]='test2.js';
Link[2]='test3.js';

for(var i=0; i<Link.lehgth; i++) {
   var js = document.createElement('script');
   js.setAttribute('src',Link[i]);
   alert(js.getAttribute('src'))
   document.body.appendChild(js)
}

</script>

Ingiborn 08.08.2012 20:49

Щас испытаем, спасибо!

vadim5june 08.08.2012 20:56

Цитата:

Сообщение от Ingiborn (Сообщение 195403)
почти то, скрипты загружает, но перестаёт работать слайдер, и некоторые другие скрипты.
первым подключаю jquery библиотеку, потом всё остальное через данный скрипт..

так наверно скрипты слайдера(и некоторые другие) так нельзя подгружать-у низ события не через live(on) подключены а просто через click-и при более позднем подключении скриптов не будут работать(моя версия)

Ingiborn 08.08.2012 21:25

<script type="text/javascript">

Link=[];
Link[0]='test1.js';
Link[1]='test2.js';
Link[2]='test3.js';

for(var i=0; i<Link.lehgth; i++)
   var js = document.createElement('script');
   js.setAttribute('src',Link[i]);
   alert(js.getAttribute('src'))
   document.body.appendChild(js)
}

</script>


Говорит синтаксическая ошибка } вот этого последнего символа.

Aetae 08.08.2012 21:48

Цитата:

Сообщение от Ingiborn (Сообщение 195735)
Говорит синтаксическая ошибка } вот этого последнего символа.

Ошибка абсолютно очевидна. Если вы совсем, ну ни капельки не знаете js - вам тут делать нечего.

Ingiborn 08.08.2012 22:10

очевидна, так укажите где она, а где и что мне делать я и сам разберусь.

Ingiborn 08.08.2012 22:13

начала функции нету, исправялеться
$({ так?

Deff 08.08.2012 22:34

Ingiborn,
<script type="text/javascript">

Link=[];
Link[0]='test1.js';
Link[1]='test2.js';
Link[2]='test3.js';

for(var i=0; i<Link.lehgth; i++) {
   var js = document.createElement('script');
   js.setAttribute('src',Link[i]);
   alert(js.getAttribute('src'))
   document.body.appendChild(js)
}

</script>

Ingiborn 08.08.2012 22:48

Спасибо Дефф.
Жду в личке.

Ingiborn 08.08.2012 23:17

всё равно не работает=(
ошибок больше нету, но скрипты не работают.

vadim5june 08.08.2012 23:53

Цитата:

Сообщение от Ingiborn (Сообщение 195771)
всё равно не работает=(
ошибок больше нету, но скрипты не работают.

событие onload у Вас теперь не после загрузки страницы а позже-после загрузки последнего скрипта

Ingiborn 09.08.2012 00:07

разобрался, спасибо Deff огромное..
ну и vadim5june за стоящий коментарий=)
всё ещё жду deff в личку...

Ingiborn 09.08.2012 02:52

А отложить загрузку изображений можно?
чтобы изображения загружались после того, как будет загружен html код со стилями?

melky 09.08.2012 07:35

Цитата:

Сообщение от Ingiborn (Сообщение 195790)
А отложить загрузку изображений можно?
чтобы изображения загружались после того, как будет загружен html код со стилями?

да, можно.
только там морок дохрена, :
<img src="/image.jpg">

<!-- превращается в ====>>>> -->

<img img-data="/image.jpg">
<noscript>
    <img src="/image.jpg">
</noscript>

как станет нужно (проскроллили, навели мышь, загрузили страницу со стилями ... ), записываем в src значение атрибута data-img.
window.onload = function () {
    for (var i = 0, imgs = document.images; i < imgs.length; i += 1) {
        if (imgs[i].src === "" && imgs[i].getAttribute("data-img")) {
            imgs[i].src = imgs[i].getAttribute("data-img");
        }
    }
};

по-моему, так это делается.

Ingiborn 09.08.2012 12:06

Спасибо!
Я знаю есть плагин lazyload, для jq, он у меня тоже стоит, но там другой принцип, думаю понимаете.
Щас попробую, может что выйдет.

Ingiborn 09.08.2012 18:43

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

Deff 09.08.2012 18:52

Цитата:

Сообщение от Ingiborn
изображения всё равно загружаются раньше чем стили.

И к чему это приводит ? Есть ли обёртка вокруг данных изо ? ( элемент с id
Их можно скрыть просто до загрузки стиля - стиль тестировать по таймеру

Ingiborn 09.08.2012 19:16

Обьясняю.
<!DOCTYPE HTML>
<html>
<head> 
<link rel="stylesheet" type="text/css" href="/css/style.css" />->Внутри данного стиля
html {background:url(fon.jpg)} }
</head>
<body>
<img src="image.jpg" />
</body>
</html>

Так вот надо, чтобы сначала загрузились стиль, и изображение в этом стиле (css)
а потом уже изображения из html кода в тегах img

Ingiborn 09.08.2012 19:20

Дефф, и напишите наконец мне в личку, я вас отблагодарить хочу=)

Deff 09.08.2012 19:26

Ingiborn,
<!DOCTYPE HTML>
<html>
<head> 
<link rel="stylesheet" type="text/css" href="/css/style.css" onload="visibl_IMG()"/>->Внутри данного стиля
html {background:url(fon.jpg)} }

<style id="HideImg" type="text/css">
 body img {
 visibility:hidden;
 }
</style>

<script type="text/javascript">
function visibl_IMG() {
  document.getElementById('HideImg').innerHTML='';
}
</script>


</head>
<body>

<img src="image.jpg" />

</body>
</html>

Ingiborn 09.08.2012 19:39

всё равно загружается первыми изображения из тега img, а не из css

Deff 09.08.2012 19:40

Ingiborn,
Ксать - думаю - что у Вас fon.jpg - не оптимизирован, поэтому и долгая загрузка - киньте ссылку - может чо поправлю

Ingiborn 09.08.2012 19:40

смотрю по farebug, по сети загрузки.

Ingiborn 09.08.2012 19:40

нее, я оптимизировал

Ingiborn 09.08.2012 19:41

с помощью YUO Smuhit

Deff 09.08.2012 19:43

Ingiborn,
Дали б ссылку на страницу - мне нужен элемент с подгружаемой Вашей картинкой из стиля

если тупо - то так:
<!DOCTYPE HTML>
<html>
<head> 
<link rel="stylesheet" type="text/css" href="/css/style.css" onload="visibl_IMG()"/>->Внутри данного стиля
html {background:url(fon.jpg)} }

<style id="HideImg" type="text/css">
 body img {
 visibility:hidden;
 }
</style>

<script type="text/javascript">
function visibl_IMG() {
  setTimeout("document.getElementById('HideImg').innerHTML=''",4000);
}
</script>


</head>
<body>

<img src="image.jpg" />

</body>
</html>

Ingiborn 09.08.2012 19:46

ещё хотел спросить..
у меня есть слайдер, структура такая
<ul>
<li><img src="image-1.jpg"></li>
<li><img src="image-2.jpg"></li>
<li><img src="image-3.jpg"></li>
</ul>
Между показами слайдов есть пауза в 10 секунд, на загрузку страницы тратиться около трёх секунд, как сделать, чтобы изображения image-2.jpg загружалось через 5 секунд после загрузки страниц, а image-3.jpg через 10, тем самым увеличить скорость первоначальной загрузки страницы.

Ingiborn 09.08.2012 19:48

Такую же структуру можно использовать и для этого слайдера?
через settimeout, но привязать к каждому изображению идентификатор?

Deff 09.08.2012 19:51

Ingiborn,
Вряд ли, - нужно код смотреть и оценить наверно больше пользы - нежели вслепую

Ingiborn 09.08.2012 19:58

visibl_IMG is not defined отвечает консоль firebug

Deff 09.08.2012 20:03

Цитата:

Сообщение от Ingiborn
visibl_IMG is not defined отвечает консоль firebug

Странно
<!DOCTYPE HTML>
<html>
<head> 
<style id="HideImg" type="text/css">
 body img {
 visibility:hidden;
 }
</style>

<script type="text/javascript">
function visibl_IMG() {
  setTimeout("document.getElementById('HideImg').innerHTML=''",4000);
}
</script>
<link rel="stylesheet" type="text/css" href="/css/style.css" onload="visibl_IMG()"/>->Внутри данного стиля
html {background:url(fon.jpg)} }

</head>
<body>

<img src="image.jpg" />

</body>
</html>

Deff 09.08.2012 20:10

Ingiborn,
Скажите -сколько весит у вас в байтах fon.jpg - если более 400кБ - киньте в личку ссылку(я так понял дело чисто в нём ? (наиболее долгая загрузка

Ingiborn 09.08.2012 23:46

c fon.jpg я пример привёл.
весит он у меня 40px40, порядка 10кб

Ingiborn 09.08.2012 23:47

у меня на странице много слайдшоу, аж 3 штуки, по 4-5 картинок 100кб, в общем прилично выходит, поэтому и хочу чтобы сразу стили загружались, а потом уже картинки

Ingiborn 09.08.2012 23:51

ошибка перестала конфликтовать, но изображения всё равно загружаются на в том порядке.

Deff 10.08.2012 00:01

Ingiborn,
Чтобы оценить что у Вас так долго грузится нужно взглянуть на сайт
Есть такой сервиз анализа загрузки http://site-perf.com/
Втавляем URL - Выбираем Test-point (первый попавшийся - жмём GO , где URL


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