2015-07-03 3 views
0

У меня следующий кодКак остановить перенаправление страницы при закрытии fancybox?

<script type="text/javascript"> 
     jQuery(document).ready(function() { 
      beginCartnotification(); 
     }); 
     setTimeout(function() { 
      window.location.href = "http://www.someurl.com"; 
     }, 5000); 
    </script> 


<script type="text/javascript"> 
     jQuery.fancybox({ 
      'width': '300', 
      'height': '90', 
      'padding': '40px', 
      'autoDimensions': false, 
      'border': '1px solid #005195', 
      'autoScale': false, 
      'transitionIn': 'fade', 
      'transitionOut': 'fade', 
      'showCloseButton': true, 
      'type': 'inline', 
      'href': '#cartnotification-popup', 
      'onClosed': function(){ //perform some task on closing the fancybox.} 
     }); 
    } 
</script> 

Теперь то, что я хочу сделать, если пользователь нажимает на кнопку закрытия на фантазии поле, страница не должна перенаправлять.

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

Как я могу достичь внутри onClosed функция?

http://fancybox.net/api

ответ

2

Просто добавьте setTimout к onComplete собственности FancyBox, которая будет вызвана после отображения содержимого. Если тайм-аут достигнут до закрытия fancybox, сделайте свою переадресацию.

В функции функции onClose сбросить таймаут, чтобы изменения window.loaction не были уволены.

Также добавьте настройку fancybox в метод jQuery .ready(), чтобы убедиться, что инициализация происходит, как только документ будет готов.

<script type="text/javascript"> 
jQuery(document).ready(function() { 

    beginCartnotification(); 

    // ADD A VAR TO HOLD YOUR TIMER. 
    var timer; 

    jQuery.fancybox({ 
    'width': '300', 
    'height': '90', 
    'padding': '40px', 
    'autoDimensions': false, 
    'border': '1px solid #005195', 
    'autoScale': false, 
    'transitionIn': 'fade', 
    'transitionOut': 'fade', 
    'showCloseButton': true, 
    'type': 'inline', 
    'href': '#cartnotification-popup', 
    'onComplete': function() { 
     timer = setTimeout(function() { 
     // REDIRECTING TAKES PLACE AFTER 5 SEC. 
     window.location.href = "http://www.someurl.com"; 
     }, 5000); 
    }, 
    'onClosed': function() { 
     // CLEAR THE TIMEOUT !!! 
     clearTimeout(timer); 
    } 
    }); 

}); 
</script> 
+0

Плюс один, однако я бы сохранил скрипт инициализации fancybox в методе '.ready()'. Также обратите внимание, что в конце кода вы можете иметь блуждающую закрывающую скобку '}' – JFK

+0

@JFK Абсолютно корректно. Thx, сделал редактирование сообщения. – DavidDomain

Смежные вопросы