Javascript 如何在TinyMCE编辑中触发页面离开警告?
我最近在TinyMCE上升级到了一个新版本(4.6.1,不再是最新版本)。当TinyMCE框被编辑但其所在的表单未提交时,我的网站中有几个受影响的区域会触发“您想离开此网站吗?”警告。现在不会触发任何警告 我尝试过许多解决方案(autosave插件、autosave\u unload init属性之前询问\u、抛出更改事件),但最接近于解决此问题的方法是触发警告,不管TinyMCE区域是否已编辑。关于如何在3.x版中添加或删除此功能,有很多信息,但在4.x版中的信息较少Javascript 如何在TinyMCE编辑中触发页面离开警告?,javascript,html,tinymce,tinymce-4,Javascript,Html,Tinymce,Tinymce 4,我最近在TinyMCE上升级到了一个新版本(4.6.1,不再是最新版本)。当TinyMCE框被编辑但其所在的表单未提交时,我的网站中有几个受影响的区域会触发“您想离开此网站吗?”警告。现在不会触发任何警告 我尝试过许多解决方案(autosave插件、autosave\u unload init属性之前询问\u、抛出更改事件),但最接近于解决此问题的方法是触发警告,不管TinyMCE区域是否已编辑。关于如何在3.x版中添加或删除此功能,有很多信息,但在4.x版中的信息较少 如果您试图在未提交表单的
如果您试图在未提交表单的情况下离开页面,并且在任何其他情况下都没有要触发的警告,我需要更改TinyMCE字段以触发警告。建议您使用 这是一个在编辑器是否脏时返回真/假值的函数。如果用户对内容进行了修改,则编辑器被视为“脏编辑器” 代码: 这里有一个建议使用
onchange
,但是有一个
“强烈推荐”是首选项,并解释原因:
我们强烈建议用户使用isDirty方法来确定
如果编辑器的内容被更改或没有,因为这是更多
精确,因为它不需要撤消级别/模糊等
需要注意的是,onchange回调不会在
每次击键都是出于性能考虑。执行
onchange回调一直都是一种糟糕的设计实践,而且
浪费用户的CPU。最好先检查一下isDirty状态
将页面保留在文档onbeforeunload事件中。这就是
自动保存插件函数。isDirty方法是推荐的方法
跟踪编辑器实例是否已被修改
了解更多信息
注意:在版本3(.x)和版本4(.x)中,IsDirty是一个公共函数。在我触摸编辑器之前,afaikIsDirty()
返回true;看看我还做了什么导致了这一切。只需添加这个,就可以在TinyMCE 5上出色地工作了。
if (tinyMCE.activeEditor.isDirty())
alert("You must save your contents.");
window.addEventListener('beforeunload', function(e) {
var myPageIsDirty = tinymce.activeEditor.isDirty()
if(myPageIsDirty) {
//following two lines will cause the browser to ask the user if they
//want to leave. The text of this dialog is controlled by the browser.
e.preventDefault(); //per the standard
e.returnValue = ''; //required for Chrome
}
//else: user is allowed to leave without a warning dialog
});