2014-09-27 74 views
2

我需要一種方法來自動/編程移動錨點在WordPress site的主頁上。我想穿過的錨是中間的標籤。自動移動錨點

例如:頁面加載,等待指定時間,標籤2打開,等待指定時間,標籤3打開,等待指定時間,標籤4打開,然後繼續重複。一旦它結束,我希望它回到開始。理想情況下,如果鼠標懸停,它將停止,但我還沒有嘗試實現。

我試圖在主頁上顯示的帖子的「文本」部分創建一個JavaScript程序,但它似乎不起作用。我看到​​警報,但從未看到"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> 

編輯對於那些誰想要知道我怎麼做我的盤旋,我只是用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

[旁註]你'渦輪Background_web編輯-2_edited-1.png'有百日咳5.6MB,可以很容易地深入到KB的... – brasofilo 2014-09-27 20:11:20

+0

謝謝你的筆記。我還沒有優化圖像。我很感激你花時間提及它! – tmbouman 2014-09-28 01:46:11

+0

有關如何讓tabSlider停止鼠標懸停的任何想法?謝謝! – tmbouman 2014-09-28 02:07:17

回答

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 2014-09-28 01:46:27

+0

是的,我知道,我使用Chrome Dev Tools直接在您的頁面上測試了代碼:) – brasofilo 2014-09-28 01:48:30