Я пытаюсь использовать JavaScript для изменения свойства currentTime элемента видео. Назначение свойств довольно простое и работает. Я также прислушиваюсь к поиску изменений по видео. Моя проблема в том, что всякий раз, когда свойство currentTime назначается программно, вызываются как onseeking, так и onseeked методы. Причина, по которой я прислушиваюсь к поискам, состоит в том, чтобы фиксировать ТОЛЬКО события поиска, созданные пользователем, а не код. Код, аналогичный тому, что я пробовал до сих пор, выглядит следующим образом:
var video = document.getElementById('vidi');
var isUser = false;
video.onseeking = function(){
console.log("Seeking");
isUser = true;
};
video.onseeked = function() {
if(isUser){
console.log("foo foo foo");
isUser = false;
}
};
video.currentTime = 600;
Можно ли фиксировать только поисковые запросы, созданные пользователями?
Если вы тщательно измените и измените video.onseeking
и video.onseeked
в нужное время, вы можете отличить поиск / поиск пользователя от поиска / поиска, созданного программным способом (что я смоделировал с помощью do_non_user_seek()
функции ниже).
Общая идея заключается в том, что при выполнении непользовательского поиска сначала задается video.seeked
указание на функцию, non_user_seeked()
которая вызывается автоматически по завершении непользовательского поиска, после чего она устанавливает video.onseeking
и video.onseeked
возвращает исходные значения user_seeking()
и user_seeked()
значения.
Теперь у вас есть несколько функций, которые вызываются в зависимости от того, был ли поиск инициирован пользователем, и могут соответственно различать их. См. В console.log()
результатах сведения о том, когда вызывается.
<script>
var video = document.getElementById('vidi');
video.onseeking = user_seeking;
video.onseeked = user_seeked;
function do_non_user_seek() {
console.log( 'do_non_user_seek()' )
video.onseeking = non_user_seeking;
video.onseeked = non_user_seeked;
video.currentTime = 600;
}
function user_seeking() {
console.log( "user seeking")
}
function user_seeked() {
console.log( "user seeked")
}
function non_user_seeking() {
console.log( "non-user seeking")
}
function non_user_seeked() {
video.onseeking = user_seeking;
video.onseeked = user_seeked;
console.log( "non-user seeked")
}
</script>
<video width="400" controls id="vidi">
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
Your browser does not support HTML5 video.
</video>
<button onclick="do_non_user_seek()">Seek (non-user)</button>
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения