@@ -192,13 +192,7 @@ class MediaView extends ComponentView {
192
192
this . setupInviewCompletion ( '.component__widget' ) ;
193
193
}
194
194
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 ( ) ;
202
196
203
197
// handle other completion events in the event Listeners
204
198
$ ( this . mediaElement ) . on ( {
@@ -521,6 +515,22 @@ class MediaView extends ComponentView {
521
515
Adapt . trigger ( 'media:transcript' , 'complete' , this ) ;
522
516
}
523
517
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
+
524
534
/**
525
535
* Queue firing a media event to prevent simultaneous events firing, and provide a better indication of how the
526
536
* media player is behaving
0 commit comments