24
A
回答
29
事件冒泡存在的原因是解決了哪個元素是事件預期目標的模糊問題。所以,如果你點擊一個div,你的意思是點擊div或其父?如果孩子沒有連接點擊處理程序,那麼它會檢查父級,等等。我相信你知道那是如何工作的。
音頻事件不泡的原因是因爲它們對任何其他元素都沒有意義。當您在音頻元素上觸發timeupdate
時,無論它是爲了音頻元素本身還是其父級div,都沒有歧義,因此不需要冒泡。
您可以閱讀事件的冒泡here
事件代表團
事件代表團更充分的歷史仍然有可能利用該事件的捕獲階段。只需添加真正作爲的addEventListener的第三個參數,看起來像這樣:
document.addEventListener('play', function(e){
//e.target: audio/video element
}, true);
注意,該事件不會冒泡,但下降的DOM樹,並且不能與stopPropagation
停止。
如果你想使用這個與jQuery的.on/.off方法(例如有命名空間和其他jQuery事件擴展)。下面的函數,採取的形式webshim library,應該成爲有用:
$.createEventCapturing = (function() {
var special = $.event.special;
return function (names) {
if (!document.addEventListener) {
return;
}
if (typeof names == 'string') {
names = [names];
}
$.each(names, function (i, name) {
var handler = function (e) {
e = $.event.fix(e);
return $.event.dispatch.call(this, e);
};
special[name] = special[name] || {};
if (special[name].setup || special[name].teardown) {
return;
}
$.extend(special[name], {
setup: function() {
this.addEventListener(name, handler, true);
},
teardown: function() {
this.removeEventListener(name, handler, true);
}
});
});
};
})();
用法:
$.createEventCapturing(['play', 'pause']);
$(document).on('play', function(e){
$('audio, video').not(e.target).each(function(){
this.pause();
});
});
相關問題
- 1. 爲什麼QtWebkit 4.8.0(Webkit 2.2)不支持音頻和視頻?
- 2. 將影片文件拆分爲音頻和視頻Psychtoolbox
- 3. 音頻和視頻文件
- 4. 撰寫視頻和音頻 - 視頻音頻不見了
- 5. 在MATLAB中將音頻和視頻合併爲視頻文件
- 6. 分頁不影響音頻流?
- 7. 合併音頻和視頻/圖像以創建電影文件
- 8. 使用音頻播放視頻後錄製音頻和視頻
- 9. 將音頻和視頻轉換爲NSData
- 10. 轉碼音頻和視頻
- 11. 合併音頻和視頻
- 12. C#音頻和視頻流
- 13. 流式音頻和視頻
- 14. NSDocument保存音頻和視頻文件
- 15. 播放音頻和視頻文件
- 16. Android:分組音頻和視頻文件
- 17. HTML5視頻和音頻不工作
- 18. 視頻不支持FLAC音頻文件
- 19. 實時影響視頻組件
- 20. 爲什麼TimeoutException不會影響我的頻道?
- 21. 爲什麼我的嵌入式響應式視頻不響應?
- 22. ffmpeg - 複合視頻和音頻和修剪音頻
- 23. 爲什麼mouseenter/mouseleave影響.click事件?
- 24. 它有什麼影響現場直播視頻?
- 25. 音頻格式,其中沉默不會影響文件大小
- 26. 將文件上傳限制爲僅音頻和視頻格式
- 27. 將不同長度的視頻和音頻合併爲批量
- 28. 什麼是合併視頻,音頻和圖像文件的最簡單方法?
- 29. 爲什麼不能離線html 5視頻/音頻播放器製作新聞?
- 30. 從視頻和音頻文件中提取語音的文本
雖然它並沒有多大意義,泡了媒體活動,以其他類型的元素,它確實使例如在'body'上註冊一個全局事件監聽器,它可以捕獲文檔中任何媒體元素的事件。 –
這是可惜的,但可以理解。不幸的是,它確實使jQuery的委託系統無法使用「技巧」。即你會附加一個'play'聽衆到例如當任何'
任何理由不接受此答案? – saml