如何使用撤消管理器确定文档是否有未保存的更改
How to use the UndoManager to determine if document has unsaved changes
我对ACE编辑器和javascript很陌生,但是除了以下内容之外,我已经设法实现了我想要的大部分目标:
我想启用或禁用"保存"按钮,具体取决于文档是否有未完成的修改,并且我尝试使用"更改"事件执行此操作:
UndoManager.reset();
$('#save').addClass("disabled");
editor.on('change', function() {
if (UndoManager.hasUndo()) {
$('#save').removeClass("disabled");
}
else {
$('#save').addClass("disabled");
}
});
加载文档时,"禁用"类会立即删除。
如果有人可以告诉我应该如何做,非常感谢。
加载文档后调用editor.session.getUndoManager().reset()
并在undoManager
上使用isClean
、markClean
方法。
var saveButton = document.getElementById("save")
var editor = ace.edit("editor")
// using input event instead of change since it's called with some timeout
editor.on("input", function() {
saveButton.disabled = editor.session.getUndoManager().isClean()
});
saveButton.addEventListener("click", function() {
editor.session.getUndoManager().markClean()
saveButton.disabled = editor.session.getUndoManager().isClean()
})
<script src="http://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<button id="save">save</button>
<div id="editor" style="height:200px"></div>
您的解决方案有一个缺点:保存后,您无法撤消。大多数现代编辑器允许在保存后撤消。
我建议你记录下原文,并在文本发生变化时进行比较。 如果文本等于原点,请禁用保存按钮。
相关文章:
- 是否可以在浏览器中使用纯JavaScript保存音频流
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 是否将PDF文件保存在其他应用程序可以访问的PhoneGap应用程序中?(iOS)
- 是否将Javascript变量保存为PHP变量?获取、发布、COOKIE
- 是否可以调用Google API获取地图图像并将图像保存在某个位置
- 是否可以使用node.js从powerpoint中提取幻灯片并将其保存为图像
- 检查是否保存/禁用cookie
- 画布是否支持嵌套的上下文保存
- 是否可以在没有用户提交表单的情况下保存表单数据
- 如何检查是否脏,但在保存时不检查
- 将所有脚本保存在一个文件中是否是一种好的做法
- 如何使用撤消管理器确定文档是否有未保存的更改
- 角度资源 - 如何检查资源实例是否有任何未保存的更改
- 当用户关闭浏览器时是否可以保存所有字段信息
- javascript 或 jQuery 是否有任何技术来创建最终用户可以即时收缩或扩展的保存对象
- 保存内部html是否允许保存页面上的所有元素
- 如何在共享点 spservice 中保存数据时检查验证是否失败
- 是否可以在浏览器中保存谷歌/必应地图's缓存
- 是否可以转换表单'在使用Javascript/JQuery将数据发送到服务器之前,将其保存到文件中
- AngularJS是否将变量保存到文件中