alert() блокує взаємодію з редактором TinyMCE в Publii
Коли спрацьовує вікно повідомлення (alert), створене за допомогою, наприклад, prompt("Please select text to format");
, редактор TinyMCE в Publii може стати повністю некерованим, і в результаті буде неможливо редагувати текст. Це пов'язано з тим, що alert()
блокує подальші дії в браузері, зокрема і взаємодію Publii з редактором. Краще уникати використання alert()
у таких випадках, оскільки він зупиняє потік виконання JavaScript, що впливає на роботу редактора.
Щоб виправити це, можна замінити alert()
на більш м’яке повідомлення в самому редакторі, яке не блокує взаємодію з ним.
// First Button
editor.ui.registry.addButton('first_button', {
text: 'First Button',
icon: 'edit',
tooltip: 'Apply first formatting',
onAction: function () {
let selectedText = editor.selection.getContent();
if (selectedText) {
editor.insertContent(`<span class="first-format">${selectedText}</span>`);
} else {
editor.notificationManager.open({
text: "Please select text to format.",
type: 'warning',
timeout: 3000
});
}
}
});
Ви побачите таке повідомлення:

Або ще цікавіше:
// First Button
editor.ui.registry.addButton('first_button', {
text: 'First Button',
icon: 'edit',
tooltip: 'Apply first formatting',
onAction: function () {
let selectedText = editor.selection.getContent();
if (selectedText) {
editor.insertContent(`<span class="first-format">${selectedText}</span>`);
} else {
editor.windowManager.alert("Please select text to format.");
}
}
});
Ви побачите таке повідомлення:

Тепер, якщо текст не обраний, користувач побачить повідомлення в редакторі (не у вікні alert), що дасть змогу продовжити роботу з редактором.
Коментарі