From 8edfe16dfa1ba66ae1f74f08b1d1f5d69519e19b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=B8=E9=B1=BC=E5=A4=A7=E6=9A=B4=E8=B5=B0?= Date: Fri, 14 Aug 2020 12:00:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:destroy=E4=B9=8B=E5=90=8E=20video=20?= =?UTF-8?q?=E4=BC=9A=E7=BB=A7=E7=BB=AD=E8=A7=A6=E5=8F=91=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `destroy` 之后 `video` 会继续触发事件。 例如,如果监听了 `error` 事件,因为代码中 `this.video.src = '';` 将视频地址置空,会触发 `MediaError {code: 4, message: "MEDIA_ELEMENT_ERROR: Empty src attribute"}`。 所以组件销毁之后,组件应该不再继续监听事件。 --- src/js/player.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/js/player.js b/src/js/player.js index eb4bc85a6..16fa05655 100644 --- a/src/js/player.js +++ b/src/js/player.js @@ -613,6 +613,9 @@ class DPlayer { this.video.src = ''; this.container.innerHTML = ''; this.events.trigger('destroy'); + Object.keys(this.events.events).forEach((key) => { + this.off(key); + }); } static get version() {