@@ -1878,7 +1878,7 @@ export default {
18781878 },
18791879 // Jumps to the specified time index when a video is loaded and seekable.
18801880 seekVideo (seekTo ) {
1881- if (typeof seekTo !== " number " ) {
1881+ if (Number . isNaN ( seekTo) ) {
18821882 return false ;
18831883 }
18841884
@@ -1891,19 +1891,39 @@ export default {
18911891 return ;
18921892 }
18931893
1894- if (seekTo > video .duration ) {
1895- video .currentTime = video .duration ;
1896- } else if (seekTo <= 0 ) {
1897- video .currentTime = 0 ;
1894+ // If possible, use the fastSeek() method to quickly jump to the new time index:
1895+ // https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/fastSeek
1896+ if (typeof video .fastSeek === " function" ) {
1897+ if (seekTo >= video .duration - 0.01 ) {
1898+ video .loop = false ;
1899+ video .fastSeek (video .duration );
1900+ this .pauseVideo (video);
1901+ } else if (seekTo <= 0 ) {
1902+ video .loop = false ;
1903+ video .fastSeek (0 );
1904+ this .pauseVideo (video);
1905+ } else {
1906+ video .fastSeek (seekTo);
1907+ }
18981908 } else {
1899- video .currentTime = seekTo;
1909+ if (seekTo >= video .duration - 0.01 ) {
1910+ video .loop = false ;
1911+ video .currentTime = video .duration ;
1912+ this .pauseVideo (video);
1913+ } else if (seekTo <= 0 ) {
1914+ video .loop = false ;
1915+ video .currentTime = 0 ;
1916+ this .pauseVideo (video);
1917+ } else {
1918+ video .currentTime = seekTo;
1919+ }
19001920 }
19011921
19021922 return true ;
19031923 },
19041924 // Skips the specified number of seconds when a video is loaded and seekable.
19051925 seekVideoSeconds (seconds ) {
1906- if (! seconds || typeof seconds !== " number " ) {
1926+ if (! seconds || Number . isNaN ( seconds) ) {
19071927 return false ;
19081928 } else if (! this .video .playing ) {
19091929 return false ;
0 commit comments