javascript execCommand(' delete')不删除chrome中的所有选择div

时间:2015-10-30 05:14:48

标签: javascript google-chrome contenteditable rangy execcommand

我尝试编写一个具有满足感的编辑器。将execCommand 在Firefox上一切正常,但在chrome中有一个错误,即删除'命令。

请查看下面的照片:

enter image description here

这是我的代码:

var $obj = $('#myBlockDivId');
var selection = rangy.getSelection();
if (selection.rangeCount > 0) selection.removeAllRanges();
var range = rangy.createRange();
range.selectNode($obj[0]);
selection.addRange(range);
range.select();

当我登录日志时:rangy.getSelection()。toHtml()==>它是对的

但是当我打电话时:

document.execCommand("delete", null, false);

它在Firefox上很好,但在Chrome上却没有,包装div不会被删除。

我该如何解决这个问题?我必须使用execCommand,因为它支持undo和redo功能。所以,我不能使用jquery或javascript dom选择器来删除div。

(我的英语不好,有人请更清楚地编辑我的问题,非常感谢)

2 个答案:

答案 0 :(得分:3)

也许你可以尝试做:
(仅注意参数)



<span contentEditable>
	Select something here and after click on delete.
</span>
<input type="button" value="Delete selection" onclick="document.execCommand('delete')"/>
&#13;
&#13;
&#13;

根据Enabled commands上的w3c.github.io:

  

在任何给定时间,可以启用或不启用支持的命令。作者可以使用queryCommandEnabled()判断当前是否启用了命令。 未启用的命令不执行任何操作 ,如调用命令的各种方法的定义中所述。

一些有用的链接:

w3c非正式草案2015年10月15日

其他资源

希望这会对你有帮助!

答案 1 :(得分:1)

尝试:

document.execCommand("delete", false, null);

而不是:

document.execCommand("delete", null, false);