问题
I'm using JWPlayer 5.4 and it's setup on the page using the javascript API.
What I'd like to do is make it so that users can fastforward/rewing via the seek bar ONLY if they have already played that part of the video.
So, if a user is watching the video for the first time they can't skip beyond the current position, however they can seek forward and back behind where the video played up until.
I'm struggling with the API onTime events etc. to try and work out the Math to make this work.
Does anyone know how this could be done.
Thanks
回答1:
I found this a while back, probably on the JWplayer forum. I think I added a bit about the playlist. So just in case you or others are still looking for an answer, consider adding stuff like:
var maxPlayPosition = 0.0;
var seeking = false;
jwplayer().onTime(function(event)
{
if (!seeking)
{
maxPlayPosition = Math.max(event.position, maxPlayPosition);
}
})
.onPlaylistItem(function()
{
maxPlayPosition = 0.0;
}) // consider using only if you have playlists
.onSeek(function (event)
{
if (!seeking)
{
if (event.offset > maxPlayPosition)
{
seeking = true;
setTimeout(function ()
{
jwplayer().seek(maxPlayPosition);
}, 100);
}
}
else
{
seeking = false;
}
});
回答2:
Had been using @mal's answer for a while, but found it was breaking for some edge cases (e.g. click and drag). Could be because we're on JW player 8?
Anyway, got a modified solution that covers them pretty well if anyone is still looking for answers to this. Relies on the seeked handler which fires after the seek occurs.
var seeking = false;
var maxPlayPosition = 0;
jwplayer().on('time', function (event) {
if (!seeking) {
maxPlayPosition = Math.max(event.position, maxPlayPosition);
}
}).on('seek', function (event) {
seeking = true;
}).on('seeked', function (event) {
var pos = jwplayer().getPosition();
if (pos > maxPlayPosition) {
jwplayer().seek(maxPlayPosition);
}
seeking = false;
});
来源:https://stackoverflow.com/questions/7348027/jwplayer-prevent-skipping-forward-unless-already-watched