aboutsummaryrefslogtreecommitdiff
path: root/ext/fg/js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/fg/js')
-rw-r--r--ext/fg/js/float.js18
-rw-r--r--ext/fg/js/frontend.js1
-rw-r--r--ext/fg/js/popup.js6
3 files changed, 25 insertions, 0 deletions
diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js
index ff50483d..1f08702d 100644
--- a/ext/fg/js/float.js
+++ b/ext/fg/js/float.js
@@ -20,6 +20,8 @@
class DisplayFloat extends Display {
constructor() {
super($('#spinner'), $('#definitions'));
+ this.autoPlayAudioTimer = null;
+
$(window).on('message', utilAsync(this.onMessage.bind(this)));
}
@@ -54,6 +56,10 @@ class DisplayFloat extends Display {
this.kanjiShow(definitions, options, context);
},
+ clearAutoPlayTimer: () => {
+ this.clearAutoPlayTimer();
+ },
+
orphaned: () => {
this.onOrphaned();
}
@@ -83,6 +89,18 @@ class DisplayFloat extends Display {
super.onKeyDown(e);
}
}
+
+ autoPlayAudio() {
+ this.clearAutoPlayTimer();
+ this.autoPlayAudioTimer = window.setTimeout(() => super.autoPlayAudio(), 400);
+ }
+
+ clearAutoPlayTimer() {
+ if (this.autoPlayAudioTimer) {
+ window.clearTimeout(this.autoPlayAudioTimer);
+ this.autoPlayAudioTimer = null;
+ }
+ }
}
window.yomichan_display = new DisplayFloat();
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js
index 3a90b3ad..266f9640 100644
--- a/ext/fg/js/frontend.js
+++ b/ext/fg/js/frontend.js
@@ -254,6 +254,7 @@ class Frontend {
searchClear() {
docImposterDestroy();
this.popup.hide();
+ this.popup.clearAutoPlayTimer();
if (this.options.scanning.selectText && this.textSourceLast) {
this.textSourceLast.deselect();
diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js
index d1009fe9..a17b184a 100644
--- a/ext/fg/js/popup.js
+++ b/ext/fg/js/popup.js
@@ -125,6 +125,12 @@ class Popup {
this.invokeApi('kanjiShow', {definitions, options, context});
}
+ clearAutoPlayTimer() {
+ if (this.injected) {
+ this.invokeApi('clearAutoPlayTimer');
+ }
+ }
+
invokeApi(action, params={}) {
this.container.contentWindow.postMessage({action, params}, '*');
}