Django Mezzanine の TinyMCE で未修正内容がある時にページを移動しようとするとき警告を出す
Django
2022-08-06 02:09 (4年前)

tinyMCE のバージョンが 4 の場合、tinyMCE.init の setup オプションで、onChange イベントを追加できます。
templates/admin/blog/blogpost/change_form.html
{% extends 'admin/change_form.html' %}
{% block content %}
{{ block.super }}
<script>
/// ページ移動確認
window.addEventListener('beforeunload', (event) => {
/// window.tinyMCEContentChanged は tinymce_setup.js で定義されており、
/// エディタの内容変更時に true になる。
if (tinyMCEContentChanged) {
event.returnValue = 'ページを移動してよろしいですか? 未保存の内容は失われます。';
}
});
/// 送信ボタンをクリックした時は移動警告を出さない
$('input[type="submit"]').click(function() {
tinyMCEContentChanged = false;
});
</script>
{% endblock %}
static/js/tinymce_setup.js
var language_codes = {
'ar': 'ar',
...
...
};
...
...
// エディタの変更イベントで True になる。
// ページ移動時に警告を出す
let tinyMCEContentChanged = false;
jQuery(function ($) {
if (typeof tinyMCE != 'undefined') {
tinyMCE.init({
selector: "textarea.mceEditor",
height: '500px',
...
...
// setup を追加
// https://www.tiny.cloud/docs-4x/configure/integration-and-setup/
setup: function (editor) {
editor.on('change', function (e) {
console.log('tinyMCEOnChange');
tinyMCEContentChanged = true;
});
}
});
}
});
評価をお願いします (会員登録・ログイン不要)
まだ評価がありません
関連記事
Django を 5.1 にアップグレードしたら、管理サイトの Inline で、プライマリーキーが表示される場所に `{'name': 'id', 'label': 'ID', 'help_text': '', 'field': 'id', 'is_hidden': True}` のような文字列が表示される場合の対応
django-allauth で、ソーシャルアカウントプロバイダーを決め打ちしてログインビュー・リダイレクトビューを返す (AWS Cognitoを使う時など)
Django5にして依存ライブラリも更新したら、メール送信で SSL: CERTIFICATE_VERIFY_FAILED エラーが出るようになった
Django の ユニットテストの assertEqual の引数の first, second は実際は expected, actual
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。
開発相談をお待ちしています。