我有一些代码实现对文本上下文菜单,上下文菜单是有一个Undo
和Redo
,通过使用调用浏览器的本地方法的项目document.execCommand('undo')
因为我需要在基于浏览器铬但是Firefox和Opera的结果,此代码的功能并不如预期。
我的期望是,撤消和重做可以当作一个输入元素的原生浏览器上下文菜单。 其结果是,输入的元素不撤消和重做,但分度,元素contenteditable
属性集,请按预期。
所以我想,如果这是在浏览器中的一个错误,或者铬或Firefox / Opera或如果我没有正确地实现代码?
下面的代码给出了我所面临的问题的例子。 所有的帮助表示赞赏。
<input contenteditable id="input" type="text"></input>
<div contenteditable id="div" class="inputLike" type="text"></div>
<button id="button1" type="button">Undo</button>
<button id="button2" type="button">Redo</button>
var input = document.getElementById("input"),
button1 = document.getElementById("button1"),
button2 = document.getElementById("button2"),
div = document.getElementById("div");
console.log("Undo", document.queryCommandSupported("undo"));
console.log("Redo", document.queryCommandSupported("redo"));
function doUndo() {
document.execCommand('undo', false, null);
}
function doRedo() {
document.execCommand('redo', false, null);
}
button1.addEventListener("click", doUndo, false);
button2.addEventListener("click", doRedo, false);
上的jsfiddle
如果你想看看实际的上下文菜单的代码,那么它也可在的jsfiddle 。