Name is required.
Email address is required.
Invalid email address
Answer is required.
Exceeding max length of 5KB

Events on('pause') and on('seek') not firing from IOS player with JWPlayer 7.0.0


I am testing JWPlayer 7.0.0 and encountered this bug today on IOS.

The on('pause') and on('seek') events do not fire from the IOS full screen video player. I saw this first when testing on my iphone. Then I reproduced this with IOS Simulator on Mac OSX, and I can also reproduce with a barebones web page through IOS Simulator & Safari console debugging.

If you close fullscreen mode in OS which means you can't play the video but can see the video on the web page, you can then click pause & seek controls and the events correctly fire. But they have no effect because the non-fullscreen player does not play videos. Resuming fullscreen once again causes these events to cease firing.

My code depends on tracking user views at multiple points, including pause, start, stop, etc. My tracking code no longer works on IOS in JWPlayer 7.

Note I temporarily turned on console logging of on('all') with Safari debugging connected to IOS Simulator and verified there as well that the "seek" and "pause" events are not fired when the user interacts with the fullscreen video.

Is this a known issue? Any ideas for a workaround? Is there another event I can use a proxy for a pause on IOS like buffer states or bufferChanged or something?

It looks like (per http://support.jwplayer.com/customer/portal/questions/8561247-seek-event-isn-t-fired-on-android-and-iphone-in-fullscreen) that "seeked" might be a workaround for the seek event? I still need a workaround for the pause event though.

Thanks for your help.

5 Community Answers

Todd

JW Player Support Agent  
1 rated :

I just tested this on my iPhone, and here’s what I noticed with the video in fullscreen:

-in JW 6, onPause() is firing but not onSeek()
-in JW 7, neither one is firing

I will certainly escalate this as a bug to our engineers. While we wait to hear back from them, a possible workaround would be to use use event handlers from Mobile Safari. Please see Apple’s documentation at https://developer.apple.com/library/safari/documentation/AudioVideo/Reference/HTMLMediaElementClassReference/index.html#//apple_ref/doc/uid/TP40009355 for more details.

I was poking around with Apple’s event listeners and this code is working for me in iOS with an MP4 video:

jwplayer(‘player’).onReady(function(){
var myPlayer = document.querySelector(‘video’);
myPlayer.addEventListener(‘pause’, function(evt) {
console.log(‘hey, I was watching that!’);
}, false);
myPlayer.addEventListener(‘seeked’, function(evt) {
console.log(‘what are you seeking for?’);
}, false);
});

vlfilter

User  
0 rated :

I'll check into that. Thank you!

vlfilter

User  
0 rated :

Hi Todd - Here's another event not working -

on('play') does not fire on IOS when you unpause a fullscreen video after pausing it. It does fire once or twice at video start, but not when resuming playback any time subsequently.

Both 'play' and 'playing' events work as a workaround, using the Apple event listeners, as seen on the Apple doc page you linked above, e.g.
myPlayer.addEventListener('play', function(evt) { ...
myPlayer.addEventListener('playing', function(evt) { ...

Also, I have confirmed that using these apple events does solve my problem & works for both Chrome&Safari on iOS.

One extra note for any other folks affected - I wrapped the whole apple event handling logic in a try/catch because otherwise it dumps errors into the chrome console on desktop, e.g.

try {
var myPlayer = document.querySelector('video');
myPlayer.addEventListener('pause', function (evt) {
alert('pause');
}, false);
}catch(err){}

Thank you!

Todd

JW Player Support Agent  
0 rated :

Thanks. I will be sure to update the bug report I filed with our Engineering team regarding this.

frank.loeliger

User  
0 rated :

Any updates about this bug? Is there a fix planned or do I have to implement the workaround Todd suggested in August?

This question has received the maximum number of answers.