我只在Firefox中有这个邪恶的问题:当我向contentEditable段添加一个链接元素时,它有时会破坏2或3中的段落。这不显示任何错误,有时需要几秒钟。这是代码:
function changeSelectedText(type,text) {
var selObj = window.getSelection();
var selRange = selObj.getRangeAt(0);
var newElement = document.createElement(type);
if(type == "a") {
newElement.setAttribute('href', text.toLowerCase());
newElement.setAttribute('target', "_blank");
} else if(type == "span"){
newElement.setAttribute('class', "big");
}
var documentFragment = selRange.extractContents();
newElement.appendChild(documentFragment);
selRange.insertNode(newElement);
var range = document.createRange();
range.selectNodeContents(newElement);
selObj.removeAllRanges();
selObj.addRange(range);
}
添加span工作完美但有链接有时会导致这种奇怪的行为。知道为什么吗?
以下是像Mike建议的jsfiddle链接: jsfiddle link
答案 0 :(得分:1)
找到它:)问题是我用来添加链接的按钮(jsfiddle的#link div)有时被选中(只有FF)。我认为mousedown函数应该防止这种情况发生,但事实并非如此。所以,我做的是我添加了js以防止选择该按钮:
<div id="#link" onselectstart="return false;" ondragstart="return false;">Add Link</div>
如果有人有更好的解决方案让我知道;)