2017-07-03 8 views
1

私は最近、TinyMCE(新しいバージョンではなくなった4.6.1)で新しいバージョンにアップグレードしました。影響を受けたサイトのいくつかの領域が「このサイトから離脱しますか? TinyMCEボックスが編集されたが、それが入っていたフォームが提出されなかったときに警告した。これで警告は表示されません。TinyMCEの編集でページの離脱警告をトリガーする方法は?

私は、TinyMCE領域が編集されているかどうかに関わらず、多くのソリューション(自動保存プラグイン、自動保存プラグイン、初期設定プロパティ、変更イベントを投げる)を試しました。この機能を3.xに追加または削除する方法については多くの情報がありますが、4.xではそれほど必要ありません。

フォームを送信せずにページを離れるときに警告トリガーを作成し、他のケースではトリガーする警告がない場合は、TinyMCEフィールドを変更する必要があります。

答えて

1

あなたがこれはエディタが汚れているか、いない場合は、true/falseの値を返す関数であるIsDirty TinyMCE function

を使用することをお勧めします。ユーザーがコンテンツを変更した場合、エディタは「ダーティ」とみなされます。

コード:

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

SO answerしかしopen bug with onchange (it doesn't always fire)があり、onchangeを使用して示唆しているここにあります。

TinyMCE docs for the onchange callbackが優先して IsDirty「を強くお勧めします」、と理由を説明

:これは はるかにあるので、エディタの内容が変更されたりされていない場合

私たちは強く を決定するためにisDirtyメソッドを利用するユーザーをお勧めします元に戻すレベルやぼかしなどが必要ないため正確です。

性能上の理由から、各キーストロークで にonchangeコールバックが発生しないことに注意することが重要です。 onchangeコールバックを常に実行することは設計上の慣れであり、 はユーザーのCPUを無駄にします。 の前にisDirty状態をチェックして、ページをドキュメントonbeforeunloadイベントのままにしておく方が良いでしょう。これは、 自動保存プラグインの機能です。エディタインスタンスが変更されているかどうかを追跡するには、isDirtyアプローチが推奨されます( )。

+0

注:IsDirtyはバージョン3(.x)と4(.x)の公開関数です。afaik –

+0

'isDirty()'はエディタに触れる前にtrueを返します。私がこれを引き起こすために何をしているのかを確認する。 –

関連する問題