2014-09-27 4 views
2

Мне нужен способ автоматически/программно перемещаться по якорям на домашней странице WordPress site. Я хочу, чтобы анкер был связан с вкладками посередине.Автоматический переход через анкеры

Например: страница загружается, ждет указанное время, вкладка 2 открывается, ждет указанное время, вкладка 3 открывается, ждет указанное время, вкладка 4 открывается, а затем продолжает повторяться. Как только это дойдет до конца, я хочу, чтобы он вернулся к началу. В идеале это остановит движение, если мышь, но я еще не пытался это реализовать.

Я попытался создать программу JavaScript в текстовой части сообщения, отображаемой на главной странице, но, похоже, она не работает. Я вижу предупреждение "Test", но никогда не вижу предупреждения "Hello".

<script type="text/javascript"> 
function scrollTo(hash) { 
    location.hash = "#" + hash; 
    alert('Hello'); 
} 
function tabSlider() { 
    delay = 2000; //2 second delay 
    setTimeout(function() {scrollTo(ert_pane1-1);},delay); 
    setTimeout(function() {scrollTo(ert_pane1-2);},delay*2); 
    setTimeout(function() {scrollTo(ert_pane1-3);},delay*3); 
    setTimeout(function() {scrollTo(ert_pane1-4);},delay*4); 
    setTimeout(function() {scrollTo(ert_pane1-0);},delay*5); 
    tabSlider(); 
    alert('Test'); 
} 
window.onload = tabSlider(); 
//--> 
</script> 

Плагин для вкладок Easy Responsive Tabs.

Благодаря brasofilo, вот окончательный рабочий код:

<script type="text/javascript"> 
function scrollTo(hash) { 
    location.hash = "#" + hash; 
    jQuery("a[href='#" + hash + "']").click(); // finds <a> with href==hash and clicks 
} 
function tabSlider() { 
    delay = 3000; //2 second delay 
    setTimeout(function() {scrollTo('ert_pane1-1');},delay); 
    setTimeout(function() {scrollTo('ert_pane1-2');},delay*2); 
    setTimeout(function() {scrollTo('ert_pane1-3');},delay*3); 
    setTimeout(function() {scrollTo('ert_pane1-4');},delay*4); 
    setTimeout(function() { scrollTo('ert_pane1-0'); tabSlider(); }, delay*5); 
} 
window.onload = tabSlider(); 
//--> 
</script> 

EDIT Для тех, кто хочет знать, как я сделал свое парение, я просто использовал JQuery, чтобы предотвратить щелчок:

var hovering = 0; 
jQuery ("#primary").hover(function() { hovering = 1; }, 
        function() { hovering = 0; }); 
function scrollTo(hash) { 
    if (hovering==1) { 
    //Do nothing 
    } else { 
    location.hash = "#" + hash; 
    jQuery("a[href='#" + hash + "']").click(); // finds <a> with href==hash and clicks 
    } 
} 
+0

[Sidenote] ваш 'Turbo-Background_web отредактированный-2_edited-1.png' имеет коклюш 5.6Mb, что может пойти вниз к KBS легко ... – brasofilo

+0

Спасибо за нотой. Я еще не оптимизировал изображения. Я ценю, что вы нашли время, чтобы упомянуть об этом! – tmbouman

+0

Любые мысли о том, как заставить tabSlider остановиться при наведении мыши? Благодаря! – tmbouman

ответ

0

location.hash добавит хэш только к URL-адресу, он фактически не переходит к хешу.

Как вы уже загружаются JQuery на сайте, это просто вопрос форсирования щелчок на якоре:

function scrollTo(hash) { 
    location.hash = "#" + hash; 
    jQuery("a[href='#" + hash + "']").click(); // finds <a> with href==hash and clicks 
} 

Ваша tabSlider функция имеет две проблемы:

  • scrollTo(value) потребности для отправки строки вы отправляете непростую «переменную».
    Если у вас есть var ert_pane1 = 'hash-value';, тогда scrollTo(ert_pane1) будет работать.
    Как вам не нужно: scrollTo('ert_pane1').

  • следующий звонок tabSlider() должен находиться в последнем таймауте, таким образом он создает нужный цикл.

function tabSlider() { 
    delay = 2000; 
    setTimeout(function() { scrollTo('ert_pane1-1'); }, delay); 
    setTimeout(function() { scrollTo('ert_pane1-2'); }, delay*2); 
    setTimeout(function() { scrollTo('ert_pane1-3'); }, delay*3); 
    setTimeout(function() { scrollTo('ert_pane1-4'); }, delay*4); 
    setTimeout(function() { scrollTo('ert_pane1-0'); tabSlider(); }, delay*5); 
} 
tabSlider(); 
+0

Работал отлично! – tmbouman

+0

Да, я знаю, я проверил код прямо на вашей странице с помощью Chrome Dev Tools :) – brasofilo

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