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