我有一个包含视频的组件:<div class="component"><video src="..." /></div>
.
现在我想通过两种方式管理播放的状态:
侦听可以通过单击本机播放/暂停按钮来更改的播放状态并对其进行处理(更改组件布局,通知其他组件......)
通过让我们说从外部手动触发播放
myComponent.playContent()
我不知道如何正确管理这个。例如,当用户单击本机视频控件时,将play
调度一个事件。当我手动调用myComponent.playContent()
which 调用domVideo.play()
时,play
事件也会被调度,所以如果我只是监听play
事件,它会被混淆或调用两次等。
问题是这里混合了两种不同的东西。
首先,可以通过用户单击本机控件来触发播放开始,在这种情况下,我想捕获事件并对其进行各种处理。这是典型的“冒泡”,自下而上的流程。
其次,程序(通常是组件) 希望以“自上而下”的方式触发播放,在这里我想区分触发的事件以避免将其视为用户创建的播放事件。
我多次遇到这个问题,例如 ExtJS 的选项卡面板(tabchange
事件)中的选项卡更改事件,我不知道如何在基于事件的编程范例中解决这个问题。
我正在寻找一个通用的解决方案或正确的方法。它不仅仅是关于原生 DOM 事件。我有一个 YT.Player
(YouTube 播放器)对象,它有自己的事件,具有相同的模型,我遇到了同样的问题。
编辑:一些技巧setTimeout
和取消是可能的,但我想避免这种情况。