|
|
@@ -435,7 +435,7 @@ export default {
|
|
|
link.parentNode.replaceChild(span, link);
|
|
|
});
|
|
|
|
|
|
- const result = tempDiv.innerHTML;
|
|
|
+ const result = this.filterTrailingWhitespace(tempDiv.innerHTML);
|
|
|
console.log('处理完成后的HTML:', result);
|
|
|
return result;
|
|
|
} catch (error) {
|
|
|
@@ -443,7 +443,61 @@ export default {
|
|
|
return htmlContent; // 如果处理失败,返回原始内容
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+ // 过滤末尾空格和换行的方法 - 只处理文本末尾,不影响格式
|
|
|
+ filterTrailingWhitespace(htmlContent) {
|
|
|
+ try {
|
|
|
+ if (!htmlContent) return htmlContent;
|
|
|
+
|
|
|
+ // 创建临时DOM元素来解析HTML
|
|
|
+ const tempDiv = document.createElement('div');
|
|
|
+ tempDiv.innerHTML = htmlContent;
|
|
|
+
|
|
|
+ // 只处理文本节点末尾的空白,不处理br标签
|
|
|
+ const processTextNodes = (node) => {
|
|
|
+ if (node.nodeType === Node.TEXT_NODE) {
|
|
|
+ // 只处理纯文本节点末尾的空格和换行,保留其他空白
|
|
|
+ node.textContent = node.textContent.replace(/\s+$/, '');
|
|
|
+ } else if (node.nodeType === Node.ELEMENT_NODE) {
|
|
|
+ // 递归处理子节点
|
|
|
+ for (let child of node.childNodes) {
|
|
|
+ processTextNodes(child);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理所有子节点的文本末尾空白
|
|
|
+ for (let child of tempDiv.childNodes) {
|
|
|
+ processTextNodes(child);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取处理后的HTML
|
|
|
+ let result = tempDiv.innerHTML;
|
|
|
+
|
|
|
+ // 只移除整个内容末尾的空白字符,不移除标签间的空白
|
|
|
+ result = result.replace(/\s+$/, '');
|
|
|
+
|
|
|
+ // 只移除整个内容开头的空白字符
|
|
|
+ result = result.replace(/^\s+/, '');
|
|
|
+
|
|
|
+ // 使用正则表达式只移除整个内容末尾的br标签
|
|
|
+ // 这个正则表达式确保只匹配整个字符串末尾的br标签
|
|
|
+ result = result.replace(/(<br\s*\/?>)+$/gi, '');
|
|
|
+
|
|
|
+ // 移除末尾的span标签如果只包含br标签
|
|
|
+ result = result.replace(/<span[^>]*>(<br\s*\/?>)+<\/span>$/gi, '');
|
|
|
+
|
|
|
+ // 移除末尾的div标签如果只包含br标签
|
|
|
+ result = result.replace(/<div[^>]*>(<br\s*\/?>)+<\/div>$/gi, '');
|
|
|
+
|
|
|
+ // 移除末尾的p标签如果只包含br标签
|
|
|
+ result = result.replace(/<p[^>]*>(<br\s*\/?>)+<\/p>$/gi, '');
|
|
|
+
|
|
|
+ return result;
|
|
|
+ } catch (error) {
|
|
|
+ console.error('过滤末尾空白时出错:', error);
|
|
|
+ return htmlContent; // 如果处理失败,返回原始内容
|
|
|
+ }
|
|
|
+ },
|
|
|
// 修改 handleContentSubmit 方法
|
|
|
async handleContentSubmit() {
|
|
|
try {
|