🎨 Cannot use the Microsoft Input Method to input Chinese https://github.com/siyuan-note/siyuan/issues/13288
This commit is contained in:
parent
2fb42c5b8c
commit
f441a37d50
2 changed files with 15 additions and 2 deletions
|
@ -2009,6 +2009,15 @@ export class WYSIWYG {
|
|||
let isComposition = false; // for iPhone
|
||||
this.element.addEventListener("compositionstart", (event) => {
|
||||
isComposition = true;
|
||||
// 微软双拼由于 focusByRange 导致无法输入文字,因此不再 keydown 中记录了,但 keyup 会记录拼音字符,因此使用 isComposition 阻止 keyup 记录。
|
||||
// 但搜狗输入法选中后继续输入不走 keydown,isComposition 阻止了 keyup 记录,因此需在此记录。
|
||||
const range = getEditorRange(protyle.wysiwyg.element);
|
||||
const nodeElement = hasClosestBlock(range.startContainer);
|
||||
if (!isMac() && nodeElement) {
|
||||
range.insertNode(document.createElement("wbr"));
|
||||
protyle.wysiwyg.lastHTMLs[nodeElement.getAttribute("data-node-id")] = nodeElement.outerHTML;
|
||||
nodeElement.querySelector("wbr").remove();
|
||||
}
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
|
@ -2086,8 +2095,10 @@ export class WYSIWYG {
|
|||
event.key !== "Meta" && event.key !== "Alt" && event.key !== "Control" && event.key !== "CapsLock" &&
|
||||
!event.ctrlKey && !event.shiftKey && !event.metaKey && !event.altKey &&
|
||||
!/^F\d{1,2}$/.test(event.key)) {
|
||||
// 搜狗输入法不走 keydown,需重新记录历史状态
|
||||
// 搜狗输入法不走 keydown,没有选中字符后不走 compositionstart,需重新记录历史状态
|
||||
if (!isMac() && nodeElement &&
|
||||
// 微软双拼 keyup 会记录拼音字符,因此在 compositionstart 记录
|
||||
!isComposition &&
|
||||
(typeof protyle.wysiwyg.lastHTMLs[nodeElement.getAttribute("data-node-id")] === "undefined" || range.toString() !== "" || !this.preventKeyup)) {
|
||||
range.insertNode(document.createElement("wbr"));
|
||||
protyle.wysiwyg.lastHTMLs[nodeElement.getAttribute("data-node-id")] = nodeElement.outerHTML;
|
||||
|
|
|
@ -166,7 +166,9 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
// 有可能输入 shift+. ,因此需要使用 event.key 来进行判断
|
||||
if (event.key !== "PageUp" && event.key !== "PageDown" && event.key !== "Home" && event.key !== "End" && event.key.indexOf("Arrow") === -1 &&
|
||||
event.key !== "Escape" && event.key !== "Shift" && event.key !== "Meta" && event.key !== "Alt" && event.key !== "Control" && event.key !== "CapsLock" &&
|
||||
!isNotEditBlock(nodeElement) && !/^F\d{1,2}$/.test(event.key)) {
|
||||
!isNotEditBlock(nodeElement) && !/^F\d{1,2}$/.test(event.key) &&
|
||||
// 微软双拼使用 compositionstart,否则 focusByRange 导致无法输入文字
|
||||
event.key !== "Process") {
|
||||
const cloneRange = range.cloneRange();
|
||||
range.collapse(false);
|
||||
range.insertNode(document.createElement("wbr"));
|
||||
|
|
Loading…
Add table
Reference in a new issue