1 回答

TA貢獻1829條經(jīng)驗 獲得超7個贊
好的,我已經(jīng)設(shè)法通過解決方法解決了這個問題,想法是:
1- 將我們從 ckeditor 獲得的全部字符串解析content.getData()
為 HTMLCollection,
2- 遍歷 html 標簽并通過檢查屬性textContent刪除任何沒有文字的標簽,一旦標簽有文字退出循環(huán)。
3-在其中包含單詞的標簽內(nèi)循環(huán),并通過拆分將字符串轉(zhuǎn)換為單詞數(shù)組str.split(' ')
并遍歷數(shù)組并刪除每個單詞,<br>
或者
直到到達這些標簽和實體以外的任何內(nèi)容,然后退出循環(huán)。
4- 您需要從(從 ckeditor 獲得的全部文本)的開頭和結(jié)尾經(jīng)歷這個過程。
trimedCkEditorText() {
let contentStr = this.content.getData();
// Remove Extra whitespaces at the begining of the text
contentStr = this.trimedCkEditorTextAt(contentStr, true);
// Remove Extra whitespaces at the end of the text
contentStr = this.trimedCkEditorTextAt(contentStr, false);
return contentStr;
},
trimedCkEditorTextAt(contentStr, startOfText) {
const parser = new DOMParser();
const doc = parser.parseFromString(contentStr, "text/html")
// Check first child
while(doc.body.children.length) {
const index = startOfText ? 0 : doc.body.children.length - 1;
const child = doc.body.children[index];
if(child.textContent.replace(/\s/g, '').length) {
// Remove <br> tags
while(child.children.length) {
const index = startOfText ? 0 : child.children.length - 1;
const grandechild = child.children[index];
if(grandechild.localName === 'br') grandechild.remove();
else break;
}
// Remove
const childTextArray = child.innerHTML.split(' ');
while(childTextArray.length) {
const index = startOfText ? 0 : childTextArray.length - 1;
if(childTextArray[index] === ' ') childTextArray.splice(index, 1);
else break;
}
child.innerHTML = childTextArray.join(' ');
break;
} else {
child.remove();
}
}
return doc.body.innerHTML;
}
添加回答
舉報