-->

Асинхронный вызов JavaScript файла LinkWall

Кот программиста

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

Асинхронный вызов JavaScript файла LinkWall

Для этого вам нужно установить сгенерированный код системы и вот тут-то и начинаются проблемы. В частности, с недавних пор, сервис перестал справляться с той нагрузкой, которую создают её участники. В результате тормозит загрузка сайтов участников. Многие даже стали убирать код системы. Те, кто платил – получают фигу, а те, кто установил код – не самое лицеприятное положение. В общем, предлагаю своё решение проблемы.

В целом ничего сложного здесь нет. Код LinkWall представляет собой вызов авто-генерируемого JavaScript файла. Понятно, что такой вариант вызова JavaScript файла, в случае проблем у сервиса, тормозит и сайт на котором установлен такой код. Решение заключается в псевдо-асинхронном вызове JavaScript файла, т.е. уже после загрузки самой странице. Конечно, видеть, что страница долго грузится неприятно, но у вас не будет проблем с частичной её загрузкой.

Ну а теперь перейдём к делу. Для наглядности возьму код LinkWall, который был установлен на моём блоге, вот он:

<script charset="utf-8" src="http://linkwall.ru/links/get/642.js"></script>

Ключевым здесь является идентификатор в имени JavaScript файла. К слову, такой файл лучше было бы кэшировать, чего в системе явно нет. Но что-то утверждать не возьмусь. Просто хотелось бы решить проблемы сервиса. Хотя, если есть проблемы с устойчивостью, то решение здесь может быть только одно – искать другого хостинг профайдера имхо.

Асинхронный вызов JavaScript файла LinkWall

Основная проблема поставленной задачи заключается в том, что вызываемый файл осуществляет вывод, т.е. использует document.write. Таким образом, говорить о полноценном асинхронном вызове не приходится. Есть интересное решение extsrc.js, но мне не хотелось использовать сторонних библиотек. Да и в теме этой я не слишком разобрался. Так что пришлось идти на компромисс.

Что я сделал? Я разместил JavaScript-код в самом конце web-страниц, перед тем же </BODY, в невидимый DIV, т.е. вот таким образом:

<div id="linkwall2" style="display:none"><script charset="utf-8" src="http://linkwall.ru/links/get/642.js"></script></div>

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

По завершению загрузки web-страницы, нам останется лишь перенести элемент linkwall2 в нужное место, например в DIV с идентификатором linkwall:

<div id="linkwall"></div>

В самом простейшем варианте это может выглядеть следующим образом:

<script>
window.onload = function() {
  document.getElementById('linkwall').appendChild(document.getElementById('linkwall2')); }
</script>

Этот вариант не требует подключения каких-то сторонних библиотек и автоматически убирает style="display:none" в исходном DIV. Тоже самое и более гибко, в плане определения момента загрузки web-страницы, может сделать с использованием jQuery библиотеки:

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js' type='text/javascript'></script>
<script>
$(document).ready(function(){
  $('#linkwall2').detach().appendTo('#linkwall'); });
</script>

Очевидно, что один из приведённых вариантов желательно разметить в теге HEAD. Надеюсь, что решение вам поможет, и вы сможете заработать на своём сайте. На этом у меня всё. Спасибо за внимание. Удачи!

Короткая ссылка: http://goo.gl/qDwMHf

Twitter Facebook ВКонтакте Одноклассники Google+

Комментариев нет:

Отправить комментарий