添加link元素时段落中断2

时间:2013-09-08 15:58:51

标签: javascript html firefox

我只在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

1 个答案:

答案 0 :(得分:1)

找到它:)问题是我用来添加链接的按钮(jsfiddle的#link div)有时被选中(只有FF)。我认为mousedown函数应该防止这种情况发生,但事实并非如此。所以,我做的是我添加了js以防止选择该按钮:

 <div id="#link" onselectstart="return false;" ondragstart="return false;">Add Link</div>

如果有人有更好的解决方案让我知道;)