【问题标题】:How to Create and Fire HTML Video tag Events如何创建和触发 HTML 视频标签事件
【发布时间】:2023-09-22 04:14:01
【问题描述】:
我遇到了一个奇怪的要求,我需要创建一个 HTML 视频标签事件,如 Play、Pause、VolumeChanged 等,然后触发它们,因为它将由不同的模块处理。
有没有类似CreateCustomEvent 或CreateEvent 和Dispatch 事件的方法?
我在网上搜索,但除了直接调用document.getElementsByTagName('video')[0].play() 等外找不到任何帮助,但这不是我需要的,因为我希望注册的事件处理程序在触发后处理事件。但是直接调用 play() 实际上会在触发“播放”事件的同时播放视频。
所以请帮帮我...
【问题讨论】:
标签:
javascript
html
html5-video
dom-events
【解决方案1】:
我得到了答案。而不是 document.dispatchEvent 直接在视频元素上调度事件,如下所示。
function()
{
var videoElement = document.getElementsByTagName('video')[0];
var VideoEvent = new Event('play');
videoElement.dispatchEvent(VideoEvent);
}
并且在应用程序端有如下所示的处理程序:
function onload()
{
video = document.getElementsByTagName('video')[0];
video.addEventListener('play', handleVideoEvent, false);
video.addEventListener('pause', handleVideoEvent, false);
}
function handleVideoEvent(evt)
{
alert('Handle event ' + evt.type);
}
请让我知道任何解释浏览器事件处理的链接或文档。我认为由于视频将是文档元素的子节点,因此事件可能会从文档传播到视频,但事实并非如此。相反,事件从子节点冒泡到父节点。
令人困惑!!!!
不管怎样
感谢大家的帮助。