diff --git a/CHANGELOG_CN.md b/CHANGELOG_CN.md
index f5a09e7ce..356c73a42 100644
--- a/CHANGELOG_CN.md
+++ b/CHANGELOG_CN.md
@@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- 设置面板支持 range 和 onRange 选项
- 添加 isAndroid 和 isiOS 工具函数
- 弹幕库添加 mount 选项,可自定义发送器的挂载位置
+- 弹幕库添加 lockTime 选项,可自定义输入框的锁定时间
## [4.4.0] - 2022-05-15
diff --git a/docs/assets/example/danmuku.js b/docs/assets/example/danmuku.js
index 5c14fef48..59a8fc513 100644
--- a/docs/assets/example/danmuku.js
+++ b/docs/assets/example/danmuku.js
@@ -21,6 +21,9 @@ var art = new Artplayer({
useWorker: true, // 是否使用 web worker
synchronousPlayback: false, // 是否同步到播放速度
filter: (danmu) => danmu.text.length < 50, // 弹幕过滤函数
+ lockTime: 5, // 弹幕输入框的锁定时间,单位秒,范围在[0 ~ 60]
+ // 自定义弹幕输入框的挂载位置,默认挂载在播放器控制栏中间
+ // mount: document.querySelector('.your-danmu-input'),
}),
],
});
diff --git a/docs/danmuku.html b/docs/danmuku.html
new file mode 100644
index 000000000..f8097b828
--- /dev/null
+++ b/docs/danmuku.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+ Artplayer.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/artplayer-plugin-danmuku/src/danmuku.js b/packages/artplayer-plugin-danmuku/src/danmuku.js
index 10d88c386..a65a7a398 100644
--- a/packages/artplayer-plugin-danmuku/src/danmuku.js
+++ b/packages/artplayer-plugin-danmuku/src/danmuku.js
@@ -56,6 +56,7 @@ export default class Danmuku {
antiOverlap: true,
useWorker: true,
synchronousPlayback: false,
+ lockTime: 5,
};
}
@@ -72,6 +73,7 @@ export default class Danmuku {
antiOverlap: 'boolean',
useWorker: 'boolean',
synchronousPlayback: 'boolean',
+ lockTime: 'number',
};
}
@@ -256,6 +258,7 @@ export default class Danmuku {
this.option.speed = clamp(this.option.speed, 1, 10);
this.option.opacity = clamp(this.option.opacity, 0, 1);
+ this.option.lockTime = clamp(this.option.lockTime, 0, 60);
if (option.fontSize) {
this.option.fontSize = this.getFontSize(this.option.fontSize);
diff --git a/packages/artplayer-plugin-danmuku/src/setting.js b/packages/artplayer-plugin-danmuku/src/setting.js
index 35c34d70d..368794c42 100644
--- a/packages/artplayer-plugin-danmuku/src/setting.js
+++ b/packages/artplayer-plugin-danmuku/src/setting.js
@@ -26,7 +26,7 @@ export default function setting(art, danmuku) {
const $danmuOff = getIcon(danmuOff, 'danmu-off');
const $danmuConfig = getIcon(danmuConfig, 'danmu-config');
const $danmuStyle = getIcon(danmuStyle, 'danmu-config');
- const $control = danmuku.option.mount || $controlsCenter;
+ const $control = danmuku.option.mount instanceof Element ? danmuku.option.mount : $controlsCenter;
function addEmitter() {
const colors = [
@@ -113,7 +113,7 @@ export default function setting(art, danmuku) {
$input.value = '';
danmuku.emit(danmu);
addClass($send, 'art-disabled');
- countdown(danmuku.option.timeout || 5);
+ countdown(danmuku.option.lockTime);
art.emit('artplayerPluginDanmuku:emit', danmu);
}
@@ -145,6 +145,12 @@ export default function setting(art, danmuku) {
art.on('resize', () => {
setStyle($emitter, 'display', $control.clientWidth < 150 ? 'none' : null);
});
+
+ art.on('destroy', () => {
+ if ($control !== $controlsCenter) {
+ $control.removeChild($emitter);
+ }
+ });
}
function addControl() {