2014-12-23 19 views
1

我有一個HTML音頻播放器這樣的:如何檢查用戶是否正在使用音頻搜索欄?

<audio id="audioPlayer" controls> 
    <source src="test.mp3"> 
</audio> 

我想顯示在同步一些圖片,音頻文件,當用戶在移動搜索條包括。 但是,我無法找到一個方法來檢查用戶是否正在使用音頻搜索條。

我曾嘗試沒有成功使用timeupdate事件:下面的代碼的工作,只有當用戶在時間尋求回來。

var audioPlayer = document.getElementById('audioPlayer'); 
var lastUpdateTime; 

audioPlayer.addEventListener('timeupdate', function() {update();}); 

function update() { 
    if (audioPlayer.currentTime - lastUpdateTime < 0) 
     console.log("seeking"); 
    lastUpdateTime = audioPlayer.currentTime; 
} 

我在尋找的東西的 「最近」 的瀏覽器(如IE10 +)工作。

回答

1

這是一個有點哈克但工程:

版本使用jQuery:

var $audio = $('#myAudio'); 
var onPause = false; 

// Pause event helps us to know is player playing or not 
$audio.on('pause', function() { 
    onPause = true; 

    setTimeout(function() { 

     onPause = false; 
    }); 
}); 

$audio[0].on('timeupdate', function(e) { 

    // trick to get current pause state 
    setTimeout(function(){ 

    // checks if player paused and not last timeupdate event call 
    if ($audio[0].paused && !onPause) { 

     // Fire event then user is changing seek bar 
     $audio.trigger('userSeeking'); 
     } 
    }); 
}); 

$audio.on('userSeeking', function(){ 
    // do some magic 
}); 

版本使用純JavaScript:

var audio = document.getElementById('myAudio'); 
var onPause = false; 
var seek = false; 

// Pause event helps us to know is player playing or not 
audio.addEventListener('pause', function(e) { 
    onPause = true; 

    setTimeout(function() { 

     onPause = false; 
    }); 
}); 

audio.addEventListener('timeupdate', function(e) { 

    // trick to get current pause state 
    setTimeout(function(){ 

    seek = false; 

    // checks if player paused and not last timeupdate event call 
    if ($audio[0].paused && !onPause) { 

     seek = true; 
     // Fire event then user is changing seek bar 
    } 

    // or you can return current state of seeking here 
    }); 
}); 

,這裏是工作示例(使用codepen jQuery的版本):

http://codepen.io/GomatoX/pen/ZYpWbN

+0

好了,我不明白你的答案。您的解決方案顯示當前的播放時間。它並不表示用戶是否在移動搜索欄。 –

+0

它的工作只是用戶手動更改時間。 – GomatoX

+1

好,非常感謝,我知道了,根據我的需求工作。我已經更新您的codepen:http://codepen.io/anon/pen/bNwpPy。我建議你相應地修改你的答案中的代碼,並且添加一些解釋來讓你的答案對其他人更清楚。 –

相關問題