我在ace編輯器和默認函數中測試似乎會自行阻止默認鍵盤快捷鍵。但回答你的問題的原因,你可以使用一個事件偵聽器ctrl + d
和command + d
不是使用e.preventDefault()
和e.stopPropagation()
...現在你會怎麼用王牌編輯器中使用:
document.addEventListener("keydown", function(e) {
if (e.key.toLowerCase() == "d" && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
editor.execCommand("removeline");
e.preventDefault();
e.stopPropagation();
}
}, false);
- 通知如何我用
e.key.toLowerCase() == "d"
而不是e.keyCode == 68
...這是因爲KeyboardEvent.keyCode現在標記爲已棄用所以我用KeyboardEvent.key來代替。使用.toLowerCase()
即使在大寫鎖定切換時也能快捷地工作。使用e.key
代替e.keyCode
的
- 一個缺點是,
e.key
將只使用英文/拉丁鍵盤輸入工作,所以關鍵必須是字面意思是「d」,而e.keyCode
將與其他語言的輸入工作,如阿拉伯語,例如(CTRL +ي)。 ..所以你決定使用哪一個。
,如果你已經刪除默認綁定/命令通緝命令mentioned here您可以添加它沒有這樣的鍵綁定:
editor.commands.addCommand({
name: "removeline",
exec: function(editor) { editor.removeLines(); },
scrollIntoView: "cursor",
multiSelectAction: "forEachLine"
});
- 它neccsarry這個命令存在,因此
editor.execCommand("removeline")
會重新工作
你好,我是無法重現的問題,王牌編輯似乎防止默認動作(添加至收藏)默認情況下。 和你使用的是不影響ACE-編輯原生功能,因此它應該工作,因爲它是解決方案。 –
我有同樣的問題,但通過在我的回調中返回「true」或沒有任何內容(沒有「return」關鍵字)解決。當我返回「假」時,事件似乎沒有阻止...... –