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

时间:2017-07-03 16:48:04

标签: javascript html tinymce tinymce-4

我最近升级到TinyMCE上的新版本(4.6.1,不再是最新版本)。我的网站有几个区域受到影响,曾经触发过“你想离开这个网站吗?”编辑TinyMCE框时发出警告,但未提交其所在的表格。现在没有触发警告。

我尝试了很多解决方案(自动保存插件,autosave_ask_before_unload init属性,抛出更改事件),但是最接近我修复此问题会使警告触发,无论是否已编辑TinyMCE区域。有很多关于如何为3.x添加或删除此功能的信息,但对于4.x更少。

如果您尝试离开页面而不提交表单,并且在任何其他情况下都没有触发警告,我需要更改TinyMCE字段以发出警告触发器。

2 个答案:

答案 0 :(得分:2)

建议您使用IsDirty TinyMCE function

如果编辑器是脏的,这是一个返回true / false值的函数。编辑被认为是“肮脏的”#34;如果用户对内容进行了修改。

代码:

if (tinyMCE.activeEditor.isDirty())
    alert("You must save your contents.");

这里有SO answer建议使用onchange,但有一个open bug with onchange (it doesn't always fire)

TinyMCE docs for the onchange callback"强烈推荐" IsDirty优先考虑,并解释原因:

  

我们强烈建议用户使用isDirty方法来确定   如果编辑内容被更改或不更改,因为这是更多   确切,因为它不需要撤消级别/模糊等

     

重要的是要注意onchange回调不会触发   每次击键都是出于性能考虑。执行   onchange回调一直只是一个糟糕的设计实践而且它   浪费用户CPU。以前检查isDirty状态会更好   将页面保留在文档onbeforeunload事件中。这是怎么回事   自动保存插件功能。 isDirty方法是推荐的方法   跟踪编辑器实例是否已被修改。

答案 1 :(得分:0)

有关更多信息。 Best way to detect when a user leaves a web page?

FromIterator::from_iter(self)