2017-07-03 489 views
1

我最近升级到TinyMCE(4.6.1,不再是最新版本)的新版本。我的网站有几个受影响的区域曾经触发过“您想离开这个网站吗?”当TinyMCE框被编辑但是它所在的表单没有被提交时警告。现在没有警告被触发。如何在TinyMCE编辑器上触发页面离开警告?

我已经尝试了很多解决方案(自动保存插件,autosave_ask_before_unload初始化属性,引发更改事件),但最接近的我已经解决这个问题,无论TinyMCE区域是否被编辑过,都会发出警告。有很多关于如何为3.x添加或删除此功能的信息,但是对于4.x而言更少。

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

回答

1

我们建议您使用IsDirty TinyMCE function

这是如果编辑器是脏的,返回真/假值的函数。如果用户对内容进行了修改,则编辑器被认为是“脏”的。

代码:

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方法是跟踪 的推荐方式。

+0

注意:IsDirty是版本3(.x)和4(.x)中的公共函数afaik –

+0

isDirty()在我触及编辑器之前返回true;检查看看我还有什么可以做这件事。 –

相关问题