使用execCommand删除元素,使其可以撤消

时间:2015-04-20 21:51:11

标签: javascript jquery contenteditable

因此,我尝试在hover内的contenteditable个元素中添加一个删除按钮,然后单击删除按钮将删除该元素。现在,我有这样的事情:

button.on("click", function() {
  item.remove();
  button.hide(); 
}

但是,我想删除撤消功能,因此用户可以按command+z删除undo。据我所知,您必须使用execCommand删除元素才能执行此操作(撤消的自定义解决方案不是一个选项)。有没有办法以某种方式使用execCommand删除特定节点(即使是一些不可选择的节点,如iframe)?

1 个答案:

答案 0 :(得分:5)

有一个delete命令。您可以将选择设置为包含相关元素,调用命令并且它将是可撤消的,至少在以下简单示例中,该示例适用于我尝试过的所有浏览器:



function deleteElement(id) {
  var el = document.getElementById("toBeDeleted");
  var range = document.createRange();
  range.selectNode(el);
  var sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(range);
  document.execCommand("delete", false, null);
}

  <input type="button" onmousedown="deleteElement('toBeDeleted'); return false" value="Delete">
  <div contenteditable="true">Use the button above to delete <b id="toBeDeleted">this bold text</b></div>
&#13;
&#13;
&#13;