Skip to content

Commit 7c021c9

Browse files
joe-replinswashbuckoliverfoster
authored
Fix: Preventing forward scrubbing (fixes: #319) (#320)
Co-authored-by: Brad Simpson <[email protected]> Co-authored-by: Oliver Foster <[email protected]>
1 parent 236cc65 commit 7c021c9

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

js/mediaView.js

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,7 @@ class MediaView extends ComponentView {
192192
this.setupInviewCompletion('.component__widget');
193193
}
194194

195-
// wrapper to check if preventForwardScrubbing is turned on.
196-
if ((this.model.get('_preventForwardScrubbing')) && (!this.model.get('_isComplete'))) {
197-
$(this.mediaElement).on({
198-
seeking: this.onMediaElementSeeking,
199-
timeupdate: this.onMediaElementTimeUpdate
200-
});
201-
}
195+
this.preventForwardScrubbing();
202196

203197
// handle other completion events in the event Listeners
204198
$(this.mediaElement).on({
@@ -521,6 +515,22 @@ class MediaView extends ComponentView {
521515
Adapt.trigger('media:transcript', 'complete', this);
522516
}
523517

518+
/**
519+
* This function ensures that users cannot skip ahead in the media until they have watched it fully if `_preventForwardScrubbing` is enabled.
520+
*/
521+
preventForwardScrubbing() {
522+
if (!this.model.get('_preventForwardScrubbing') || this.model.get('_isComplete')) return;
523+
$(this.mediaElement).on({
524+
seeking: this.onMediaElementSeeking,
525+
timeupdate: this.onMediaElementTimeUpdate
526+
});
527+
const timeSlider = this.$('.mejs__time-slider')[0];
528+
if (!timeSlider) return;
529+
timeSlider.style.pointerEvents = 'none';
530+
timeSlider.addEventListener('input', (e) => e.preventDefault());
531+
timeSlider.setAttribute('aria-disabled', 'true');
532+
}
533+
524534
/**
525535
* Queue firing a media event to prevent simultaneous events firing, and provide a better indication of how the
526536
* media player is behaving

0 commit comments

Comments
 (0)