-
[js] 解决双击选取内容末尾带空格的问题
2024-11-10 22:31我又让 GPT 改了一个:(行级元素末尾的空格 GPT 也去不掉,但至少不报错了)
(() => { document.addEventListener('dblclick', function(event) { // 判断当前双击的元素是否在 .protyle-wysiwyg 元素内 const targetElement = event.target.closest('.protyle-wysiwyg'); if (!targetElement) { return; // 如果不在指定元素内,则直接返回 } const selection = window.getSelection(); const selectedText = selection.toString(); // 如果没有选中任何有效文本,则直接返回 if (!selectedText.trim()) { return; } // 处理选中的文本 const range = selection.getRangeAt(0); const endContainer = range.endContainer; // 如果选中的文本以空白字符结尾,去掉末尾所有空白字符 const whitespaceMatch = selectedText.match(/\s+$/); if (whitespaceMatch) { const whitespaceCount = whitespaceMatch[0].length; const endOffset = Math.max(0, range.endOffset - whitespaceCount); // 确保不小于0 // 确保结束偏移量不超过文本节点的长度 const newEndOffset = Math.min(endOffset, endContainer.length); // 设置新的范围 range.setEnd(endContainer, newEndOffset); selection.removeAllRanges(); selection.addRange(range); } }); })();
-
[js] 解决双击选取内容末尾带空格的问题
2024-11-10 20:31我让 GPT 改了一下:
(() => { document.addEventListener('dblclick', function() { const selection = window.getSelection(); const selectedText = selection.toString(); // 如果没有选中任何有效文本,则直接返回 if (!selectedText.trim()) { return; } // 处理选中的文本 const range = selection.getRangeAt(0); // 如果选中的文本以空白字符结尾,去掉末尾所有空白字符 const whitespaceMatch = selectedText.match(/\s+$/); if (whitespaceMatch) { const whitespaceCount = whitespaceMatch[0].length; const endOffset = range.endOffset - whitespaceCount; // 设置新的范围 range.setEnd(range.endContainer, endOffset); selection.removeAllRanges(); selection.addRange(range); } }); })();