初始化contentEditable,强制BR换行,禁止图片换行
可视化编辑器弃坑了,复制粘贴格式化太难搞,把当前进度记录一下。
function editor_inital(id){
document.getElementById(id).contentEditable=true;
//强制换行使用BR
document.addEventListener('keydown',function(e){
if(e.key!='Enter'){return;};
e.preventDefault();
let s=window.getSelection(),c=document.createRange(),n=document.createElement('BR');
s.getRangeAt(0).deleteContents();s.getRangeAt(0).insertNode(n);
s.removeAllRanges();c.setStartAfter(n);s.addRange(c);
});
//让图片换不了行
new MutationObserver(function(rec){
for(let key in rec){
if(rec[key].nextSibling && rec[key].nextSibling.tagName=='IMG' && rec[key].nextSibling.previousSibling && rec[key].nextSibling.previousSibling.tagName!='BR'){rec[key].nextSibling.insertAdjacentHTML('beforebegin','<br />');}
else if(rec[key].previousSibling && rec[key].previousSibling.tagName=='IMG' && rec[key].previousSibling.nextSibling && rec[key].previousSibling.nextSibling.tagName!='BR'){rec[key].previousSibling.insertAdjacentHTML('afterend','<br />');}
else if(rec[key].addedNodes.length){for(let obj of rec[key].addedNodes){if(obj.tagName=='IMG' && obj.previousSibling && obj.previousSibling.tagName!='BR'){obj.insertAdjacentHTML('beforebegin','<br />');};if(obj.tagName=='IMG' && obj.nextSibling && obj.nextSibling.tagName!='BR'){obj.insertAdjacentHTML('afterend','<br />');};};};
};
}).observe(document.getElementById('editor'),{characterData:true,childList:true,subtree:true});
};