Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.10.2011, 18:08
Интересующийся
Отправить личное сообщение для JIEXA Посмотреть профиль Найти все сообщения от JIEXA
 
Регистрация: 07.02.2010
Сообщений: 17

Асинхронная загрузка javascript
Всем привет!

Уже много лет существует проблема у счетчиков, партнерских программ и т.д.: когда у них ложится сервер, то все сайты, которые размещали их код - начинают подвисать.

Например, возьмем пример.

Сайт site1.ru размещают в середине своей страницы код баннерной сети bannernetwork1.ru

<html>
<head>
...
</head>
<body>
...
<script src="http://bannernetwork1.ru/code.js" type="text/javascript">
...
</body>
</html>


А сам code.js содержит что-то вроде:
document.write("Это интересный баннер");


Затем, вдруг у bannernetwork1.ru появляются проблемы и он становится недоступен. Теперь у сайта site1.ru будет тормозить загрузка страницы на месте вставки кода с bannernetwork1.ru

Как можно побороть данную проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 31.10.2011, 20:00
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

никак. поскольку все партнёрки идут с переадресацией через сайт партнёрки. т.е при клике идёт переход на сай партнёрки а затем на сайт владелеца банера

Последний раз редактировалось dmitriymar, 31.10.2011 в 20:47.
Ответить с цитированием
  #3 (permalink)  
Старый 31.10.2011, 22:41
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Во-первых и в-главных, придётся отказаться от document.write, он несовместим с асинхронной загрузкой.

Далее, если создать пустой тег script без src и без содержимого, а затем скриптом задать ему src, то скрипт загрузится асинхронно во всех браузерах, кроме Оперы.
<script type="text/javascript" id="my-script"></script>
<script type="text/javascript">
document.getElementById('my-script').src = 'path/to/script';
</script>


В Опере устанавливаем src нашему тегу по событию DOMContentLoaded, а не сразу.
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2011, 18:27
Интересующийся
Отправить личное сообщение для JIEXA Посмотреть профиль Найти все сообщения от JIEXA
 
Регистрация: 07.02.2010
Сообщений: 17

Kolyaj
т.е. по факту получиться что-то вроде:

<div id="banner-div"></div>
<script type="text/javascript" id="my-script"></script>
<script type="text/javascript">
document.getElementById('my-script').src = 'path/to/script';
</script>


А в самом скрипте через innerHTML вставлять содержание баннера?
Ответить с цитированием
  #5 (permalink)  
Старый 02.11.2011, 09:02
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Если не считать Оперу, то так, да.
Ответить с цитированием
  #6 (permalink)  
Старый 02.11.2011, 12:35
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

А ещё можно сверстать так, чтобы баннер грузился, после контента, а находился в середине страницы или передвинуть его после загрузки, так же из скрипта. На ЯД раньше не было асинхронной загрузки, а сервера тормозили, проблему удалось решить таким образом.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #7 (permalink)  
Старый 02.11.2011, 13:32
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

У некоторых счетчиков есть варианты для iframe'ов.
Ответить с цитированием
  #8 (permalink)  
Старый 02.11.2011, 17:46
Интересующийся
Отправить личное сообщение для JIEXA Посмотреть профиль Найти все сообщения от JIEXA
 
Регистрация: 07.02.2010
Сообщений: 17

Я вот смотрю, у того же яндекса используется вот такая вставка кода:
document.write('<sc'+'ript type="text/javascript" src="http://an.yandex.ru/system/context.js"></sc'+'ript>');


она не дает асинхронной загрузки?
и кстати, как можно избавиться внутри скрипта от document.write не создавая дополнительного div`a перед загрузкой скрипта?
Ответить с цитированием
  #9 (permalink)  
Старый 02.11.2011, 22:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от JIEXA
она не дает асинхронной загрузки?
Не даёт.

Сообщение от JIEXA
и кстати, как можно избавиться внутри скрипта от document.write не создавая дополнительного div`a перед загрузкой скрипта?
id-шник у скрипта уже есть, найти ссылку на него не сложно. А дальше можно вставлять созданные элементы перед ним с помощью insertBefore.
Ответить с цитированием
  #10 (permalink)  
Старый 14.11.2011, 04:35
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

можно еще установить выполнение скрипта по setTimeout
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Асинхронная загрузка изображений InTheTT AJAX и COMET 4 22.10.2011 15:51
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Асинхронная загрузка изображения dummer jQuery 13 21.05.2010 05:18
DOM javascript загрузка удаленной страницы galiaf45 AJAX и COMET 1 28.03.2010 19:33