2016-08-24 73 views
0

我有一個全屏圖像滑塊,它沒有自動播放功能,所以我必須編寫自定義腳本來單擊下一個按鈕。鼠標單擊或懸停時的清除間隔

var interval = setInterval(function() { 

document.querySelector('.fp-controlArrow.fp-next').click(); 


}, 7000); 

setTimeout(function() { clearInterval(interval); }, 44000); 

但現在,每當用戶點擊同一個類(.fp-controlArrow.fp-NEXT)的按鈕,我很想給clearInterval。 JS能否以某種方式區分模擬點擊和真實鼠標點擊之間的區別?如果是這樣,那麼代碼是什麼?

如果沒有,也許有可能清除懸停按鈕與.fp-controlArrow.fp-next類間隔?

謝謝!

+0

我不明白「模擬點擊和真正的鼠標點擊」是什麼意思?什麼是模擬點擊? –

回答

0

是的,您可以通過使用isTrusted事件偵聽器中的事件對象的屬性來區分用戶生成的事件與代碼生成的事件。

var elem = document.querySelector('.fp-controlArrow.fp-next'); 

elem.addEventListener("click", function(event) { 
    if(event.isTrusted) 
     clearInterval(interval); 

    }, false); 

https://developer.mozilla.org/en/docs/Web/API/Event/isTrusted

0

可以使用mousedown事件爲真正的點擊。

var el = document.querySelector('.fp-controlArrow.fp-next') 
el.addEventListener('mousedown', function(){ 
    clearInterval(interval); 
}); 

工作例如:https://jsfiddle.net/fov47eny/

您也可以使用isTrusted但對瀏覽器的支持有限。

if (e.isTrusted) { 
    /* The event is trusted. */ 
} else { 
    /* The event is not trusted. */ 
} 
+0

嗨,穆罕默德。感謝你的回答。所以在我的情況下,我應該用我的按鈕類替換「targer」是嗎?所以我的代碼如下...我錯在哪裏? 'var interval = setInterval(function(){ document.querySelector('.fp-controlArrow.fp-next')。click();},7000); ('。fp-controlArrow.fp-next')。on('mousedown',function(){ clearInterval(interval);});' –

+0

@DmitryRa我更新了我的代碼。你可以在這裏看到這個例子https://jsfiddle.net/fov47eny/ –

+0

謝謝。我已經添加了你的代碼,但是當我點擊「下一步」按鈕時id沒有清除間隔。也許它與頁面上代碼的複雜性有關......它是http://rogercastillo.org/responsive3/home ..該網站還沒有優化,等待大約7秒的頁面加載。任何想法呢? –