diff --git a/src/App.vue b/src/App.vue index 6e291e2..b750a9f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -28,6 +28,7 @@ export default defineComponent({ utools: UTOOLS, cronJobs: {}, enterData: {}, + subInputEvent: null, }; }, created: function () { diff --git a/src/components/CommandRunResult.vue b/src/components/CommandRunResult.vue index 6e354bb..548ba61 100644 --- a/src/components/CommandRunResult.vue +++ b/src/components/CommandRunResult.vue @@ -84,7 +84,6 @@ export default { runResult: [], runResultStatus: true, subInputValue: "", - subInputListener: null, ctrlCListener: null, quickcommandListener: null, history: [], @@ -226,7 +225,7 @@ export default { setTimeout(() => { if (this.subInputValue) querySubInput(); }, 100); - this.subInputListener = (event) => { + let listener = (event) => { event.preventDefault(); switch (event.keyCode) { case 13: @@ -248,7 +247,8 @@ export default { break; } }; - document.addEventListener("keydown", this.subInputListener, true); + this.$root.subInputEvent = ["keydown", listener, true]; + document.addEventListener(...this.$root.subInputEvent); }, // payload 临时赋值 async getTempPayload(currentCommand) { @@ -308,10 +308,10 @@ export default { }, stopRun() { this.runResult = []; - if (!!this.subInputListener) { + if (!!this.$root.subInputEvent) { this.subInputValue = ""; utools.removeSubInput(); - document.removeEventListener("keydown", this.subInputListener, true); + document.removeEventListener(...this.$root.subInputEvent); } this.clear(); this.frameInitHeight = 0; diff --git a/src/components/quickcommandUI/SelectList.vue b/src/components/quickcommandUI/SelectList.vue index dd362ef..54db0f7 100644 --- a/src/components/quickcommandUI/SelectList.vue +++ b/src/components/quickcommandUI/SelectList.vue @@ -205,12 +205,15 @@ export default { clear() { utools.removeSubInput(); - document.removeEventListener("keydown", this.keyHandler); + document.removeEventListener("keydown", this.keyHandler, true); this.setUtoolsHeight(this.listMaxHeight); }, addListeners() { - document.addEventListener("keydown", this.keyHandler); + // 如果之前启用了子输入框,先移除监听 + if (this.$root.subInputEvent) + document.removeEventListener(...this.$root.subInputEvent); + document.addEventListener("keydown", this.keyHandler, true); }, }, };