Как поставить задержку для ссылок и открывать их в новом окне


Этот плагин на jQuery, deferload, придумал enavu, и ничего нового в этом нет, но выглядит задумка довольно симпатично.
Для чего этот плагин?
Предположим, вы выкладываете в блоге ссылку на скачку файла, ради которой точно потечёт народ с поисковиков. Но одной ссылки мало, надо же как-то удержать гостя (а то он кликнет на ссылку и закроет окно) на странице (даже статистика посчитает такой визит за "отказ"), поэтому на линк можно "повесить" небольшую задержку и заставить открывать его в новом окне (альтернатива для target="blank").
Есть и другие причины использовать данный плагин. Хотя бы для того, чтобы выглядеть по-взрослому...

Демо:


Вывод случайностей в blogger


Установка и настройка.
Самая главная часть здесь - это два скрипта (базовый и маленький настроечный):
<script>
(function($){
$.fn.extend({ 
 //plugin name - animatemenu
 deferLoad: function(options) {
  
  var defaults = {
   wait: 3000,
   image: "http://images.fzilla.com/images/loading.gif",
   attr: "href"
  };
  
  var options = $.extend(defaults, options);
  
  $(this).live("click", function(e){
   var o =options;
   var obj = $(this);  
   var hr = $(this).attr(o.attr);
   var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
   
   if (is_chrome) {
    window.open(hr);
   } else {
    obj.append('<img src="'+o.image+'" class="removeMe" />');
    
    setTimeout(function() {
     window.open(hr);
    }, o.wait);
    setTimeout(function() {
     $(".removeMe").hide();
    }, o.wait);
   }
   e.preventDefault();
   return false;
  });
 }
});
})(jQuery);
</script>
<script>
$(document).ready(function(){
 $("a").deferLoad();
});
</script>
В первом скрипте за время задержки и анимированный кружок отвечает эта строка:
  var defaults = {
   wait: 3000,
   image: "http://images.fzilla.com/images/loading.gif",
   attr: "href"
  };
1000 - это примерно 1 секунда.

Во втором скрипте строка:
$("a").deferLoad();
Указывает на то, что будет обрабатываться каждый тег <a> на странице. Поэтому линк на файл выглядит самым обычным образом (скрипт сам подставит ему <img style="display: none;" src="jhttp://images.fzilla.com/images/loading.gif" class="removeMe">).

Как лучше всего использовать скрипты?
Положить главный на внешний хостинг (если у вас блог на Blogger) и по мере необходимости кидать на него ссылку. Второй скрипт, который является настроечным, и его можно копировать прямо на страницу.

К сожалению, задержка срабатывает только в опере и фаерфоксе, в хроме ссылка просто откроется в новом окне.
Но это большой плюс плагина. Если хочется сделать для всех ссылок в блоге разом target="blank" (то есть открывать их в новой вкладке), deferload - это то, что нужно (для этого нужно будет оба скрипта записать в (<head></head>).

Автор

4 комментария:

  1. Firefox заблокировал всплывающее окно...

    А мелкие пакости, типа описанного, заставляют меня элементарно - смыться и никогда более не возвращаться. Благо в сети альтернатива найдётся всегда.

    ОтветитьУдалить
  2. Где ж тут пакости? Скрипт оперативно делает target="blank", нормальное явление. У вас линукс. Для него единственная пакость - это запороленный rar=).

    ОтветитьУдалить
  3. Не уверен, что index.php будет обрабатывать все теги a в джумле.
    Лично у меня в LitePublisher head реализован иначе, и простая установка скрипта в index не поможет.

    ОтветитьУдалить