|
@@ -96,7 +96,7 @@ export default {
|
|
|
},
|
|
},
|
|
|
wordlimitNum: {
|
|
wordlimitNum: {
|
|
|
type: [Number, Boolean],
|
|
type: [Number, Boolean],
|
|
|
- default: 1000,
|
|
|
|
|
|
|
+ default: 1000000,
|
|
|
},
|
|
},
|
|
|
isFill: {
|
|
isFill: {
|
|
|
type: Boolean,
|
|
type: Boolean,
|
|
@@ -171,18 +171,15 @@ export default {
|
|
|
branding: false, // 品牌
|
|
branding: false, // 品牌
|
|
|
statusbar: false, // 状态栏
|
|
statusbar: false, // 状态栏
|
|
|
entity_encoding: 'raw', // raw不编码任何字符;named: 使用命名实体(如 );numeric: 使用数字实体(如  )
|
|
entity_encoding: 'raw', // raw不编码任何字符;named: 使用命名实体(如 );numeric: 使用数字实体(如  )
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
setup: (editor) => {
|
|
setup: (editor) => {
|
|
|
-
|
|
|
|
|
- var that=this
|
|
|
|
|
- editor.on('GetContent', function(e) {
|
|
|
|
|
- if (e.format === 'html') {
|
|
|
|
|
- e.content = that.smartPreserveLineBreaks(editor, e.content);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ var that = this;
|
|
|
|
|
+ editor.on('GetContent', function (e) {
|
|
|
|
|
+ if (e.format === 'html') {
|
|
|
|
|
+ e.content = that.smartPreserveLineBreaks(editor, e.content);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
let isRendered = false; // 标记是否已渲染
|
|
let isRendered = false; // 标记是否已渲染
|
|
|
editor.on('init', () => {
|
|
editor.on('init', () => {
|
|
|
editor.getBody().style.fontSize = this.init.font_size; // 设置默认字体大小
|
|
editor.getBody().style.fontSize = this.init.font_size; // 设置默认字体大小
|
|
@@ -379,59 +376,57 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ smartPreserveLineBreaks(editor, content) {
|
|
|
|
|
+ var that = this;
|
|
|
|
|
+ var body = editor.getBody();
|
|
|
|
|
+ var originalParagraphs = Array.from(body.getElementsByTagName('p'));
|
|
|
|
|
+
|
|
|
|
|
+ var tempDiv = document.createElement('div');
|
|
|
|
|
+ tempDiv.innerHTML = content;
|
|
|
|
|
+ var outputParagraphs = Array.from(tempDiv.getElementsByTagName('p'));
|
|
|
|
|
+
|
|
|
|
|
+ outputParagraphs.forEach(function (outputP, index) {
|
|
|
|
|
+ var originalP = originalParagraphs[index];
|
|
|
|
|
+
|
|
|
|
|
+ if (originalP && outputP.innerHTML === '') {
|
|
|
|
|
+ // 判断这个空段落是否应该包含 <br>
|
|
|
|
|
+ var shouldHaveBr = that.shouldPreserveLineBreak(originalP, index, originalParagraphs);
|
|
|
|
|
+ if (shouldHaveBr) {
|
|
|
|
|
+ outputP.innerHTML = '<br>';
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ return tempDiv.innerHTML;
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ shouldPreserveLineBreak(paragraph, index, allParagraphs) {
|
|
|
|
|
+ // 规则1:如果段落原本包含 <br>
|
|
|
|
|
+ if (paragraph.innerHTML.includes('<br>')) {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 规则2:如果段落位于内容中间(不是第一个或最后一个)
|
|
|
|
|
+ if (index > 0 && index < allParagraphs.length - 1) {
|
|
|
|
|
+ var prevHasContent = allParagraphs[index - 1].textContent.trim() !== '';
|
|
|
|
|
+ var nextHasContent = allParagraphs[index + 1].textContent.trim() !== '';
|
|
|
|
|
|
|
|
- smartPreserveLineBreaks(editor, content) {
|
|
|
|
|
- var that=this
|
|
|
|
|
- var body = editor.getBody();
|
|
|
|
|
- var originalParagraphs = Array.from(body.getElementsByTagName('p'));
|
|
|
|
|
-
|
|
|
|
|
- var tempDiv = document.createElement('div');
|
|
|
|
|
- tempDiv.innerHTML = content;
|
|
|
|
|
- var outputParagraphs = Array.from(tempDiv.getElementsByTagName('p'));
|
|
|
|
|
-
|
|
|
|
|
- outputParagraphs.forEach(function(outputP, index) {
|
|
|
|
|
- var originalP = originalParagraphs[index];
|
|
|
|
|
-
|
|
|
|
|
- if (originalP && outputP.innerHTML === '') {
|
|
|
|
|
- // 判断这个空段落是否应该包含 <br>
|
|
|
|
|
- var shouldHaveBr =that.shouldPreserveLineBreak(originalP, index, originalParagraphs);
|
|
|
|
|
- if (shouldHaveBr) {
|
|
|
|
|
- outputP.innerHTML = '<br>';
|
|
|
|
|
|
|
+ if (prevHasContent && nextHasContent) {
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- return tempDiv.innerHTML;
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- shouldPreserveLineBreak(paragraph, index, allParagraphs) {
|
|
|
|
|
- // 规则1:如果段落原本包含 <br>
|
|
|
|
|
- if (paragraph.innerHTML.includes('<br>')) {
|
|
|
|
|
- return true;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 规则2:如果段落位于内容中间(不是第一个或最后一个)
|
|
|
|
|
- if (index > 0 && index < allParagraphs.length - 1) {
|
|
|
|
|
- var prevHasContent = allParagraphs[index - 1].textContent.trim() !== '';
|
|
|
|
|
- var nextHasContent = allParagraphs[index + 1].textContent.trim() !== '';
|
|
|
|
|
-
|
|
|
|
|
- if (prevHasContent && nextHasContent) {
|
|
|
|
|
- return true;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 规则3:如果段落是通过回车创建的(前后有内容)
|
|
|
|
|
+ var isBetweenContent = false;
|
|
|
|
|
+ if (index > 0 && allParagraphs[index - 1].textContent.trim() !== '') {
|
|
|
|
|
+ isBetweenContent = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (index < allParagraphs.length - 1 && allParagraphs[index + 1].textContent.trim() !== '') {
|
|
|
|
|
+ isBetweenContent = true;
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 规则3:如果段落是通过回车创建的(前后有内容)
|
|
|
|
|
- var isBetweenContent = false;
|
|
|
|
|
- if (index > 0 && allParagraphs[index - 1].textContent.trim() !== '') {
|
|
|
|
|
- isBetweenContent = true;
|
|
|
|
|
- }
|
|
|
|
|
- if (index < allParagraphs.length - 1 && allParagraphs[index + 1].textContent.trim() !== '') {
|
|
|
|
|
- isBetweenContent = true;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return isBetweenContent;
|
|
|
|
|
- },
|
|
|
|
|
|
|
|
|
|
|
|
+ return isBetweenContent;
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
// 设置背景色
|
|
// 设置背景色
|
|
|
setBackgroundColor() {
|
|
setBackgroundColor() {
|