我有一個包含視頻的組件:<div class="component"><video src="..." /></div>
。區分用戶觸發事件和代碼觸發事件
現在我要管理兩種方式的再生的狀態:
監聽,可以通過點擊本地播放/暫停按鈕,可以改變播放狀態做的東西與它(改變部件的佈局,通知其他組件......)
從外部手動觸發播放經由讓說
myComponent.playContent()
我不知道如何正確管理。例如,當用戶單擊本機視頻控件時,將調度play
事件。當我手動調用myComponent.playContent()
這就要求domVideo.play()
的play
事件也出動,所以如果我只是聽爲play
事件它被等混淆或叫了兩聲。
的問題是兩個不同的東西在這裏混合。
第一個,播放開始可以通過用戶點擊本機控件觸發,在這種情況下,我想捕捉事件並做所有事情。這是典型的「冒泡」,順流流。
二,則程序 - 通常組件 -要觸發播放的「自上而下」的方式,在這裏我想區分觸發的事件,以避免把它當作用戶創建播放事件。
我曾多次遇到這個問題,例如在ExtJS的選項卡面板(tabchange
事件)中改變tab的事件,我不知道如何在基於事件的編程範例中解決這個問題。
我正在尋找一個通用的解決方案或正確的做法。它不僅關於本地DOM事件。我有一個YT.Player
(YouTube播放器)對象,其自己的事件具有相同的模型,並且我遇到了同樣的問題。
編輯:一些技巧與setTimeout
和取消是可能的,但我想避免這種情況。