Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在TinyMCE编辑中触发页面离开警告?_Javascript_Html_Tinymce_Tinymce 4 - Fatal编程技术网

Javascript 如何在TinyMCE编辑中触发页面离开警告?

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上升级到了一个新版本(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是一个公共函数。在我触摸编辑器之前,afaik
IsDirty()
返回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
});