是否有任何方法可以为textarea导出/保存任何浏览器的本机撤消/重做堆栈?我希望能够撤消/重做所有在textarea中的输入,事后。
我还想使用javascript调用本机undo / redo堆栈,这可以通过以下方式轻松完成:
$('#textarea_im_using').focus();
document.execCommand('undo', false, null);
但是,这导致控制台中出现NS_ERROR_FAILURE:Failure错误消息。有什么想法吗?
总之,我有两个问题:
我目前正在使用Mozilla Firefox(最新版本)。我很乐意尝试任何有效的浏览器(Safari除外)。
答案 0 :(得分:6)
execCommand
,according to MDN与文档设计模式或contentEditable
元素相关,而不是像textarea
这样的表单字段。
使用contentEditable
div
可能会让您执行您尝试完成的任务。当然,在支持它的浏览器上,它允许您以编程方式触发undo
操作,并且我相信您对contentEditable
div
的控制比对textarea
的控制更多。
HTML:
<p>Edit me:</p>
<div id="editor"></div>
<button id="buttonUndo">Undo</button>
CSS:
#editor {
border: 1px solid black;
min-height: 2em;
}
JavaScript的:
var editor = document.getElementById("editor");
var buttonUndo = document.getElementById("buttonUndo");
editor.contentEditable = true;
buttonUndo.onclick = function() {
document.execCommand("undo", false, null);
};
(在onclick
使用,因为IE8支持这些内容,我不喜欢玩addEventListener
/ attachEvent
游戏......)