如何防止IE10中意外删除可信的ul?

我想在页面上有一个满足的ul。 但是,在Internet Explorer 10中,如果单击它,使用右键单击菜单或CTRL + A选择all,然后删除,ul元素将从页面中删除。

什么是防止这种情况的最佳方法,或者至少检测它何时发生并插入替换ul?

我建议拦截删除和退格键并手动执行删除操作。 步骤是:

  • 获取所选范围
  • 如果范围的末端位于可编辑的

      元素内,则调整范围的末尾

    • 在范围上调用deleteContents()

    请注意,以下内容对IE <= 8不起作用。如果需要支持这些浏览器,可以使用我的Rangy库,它也可以用来简化deleteSelectedContent()

    演示: http : //jsfiddle.net/timdown/STcXa/3/

    码:

     var editor = document.getElementById("editor"); function deleteSelectedContent() { if (window.getSelection) { var sel = window.getSelection(); if (sel.rangeCount > 0) { var range = sel.getRangeAt(0); var editorRange = range.cloneRange(); editorRange.selectNodeContents(editor); // Adjust selection range boundaries if (range.compareBoundaryPoints(Range.START_TO_START, editorRange) == -1) { range.setStart(editorRange.startContainer, editorRange.startOffset); } if (range.compareBoundaryPoints(Range.END_TO_END, editorRange) == 1) { range.setEnd(editorRange.endContainer, editorRange.endOffset); } range.deleteContents(); } } } editor.addEventListener("keydown", function(evt) { if (window.getSelection && !window.getSelection().isCollapsed && (evt.keyCode == 8 || evt.keyCode == 46)) { evt.preventDefault(); deleteSelectedContent(); } }, false);