Когда я встраиваю редактор PageDown в мою веб-страницу, как я могу остановить его от конвертации в реальном времени?
Я заметил из документов, что PageDown предлагает refreshPreview
метод. Я хотел бы отключить редактирование в реальном времени и использовать этот метод, чтобы выполнять преобразование только тогда, когда пользователь нажимает кнопку предварительного просмотра.
Я пытался иметь onPreviewRefresh
hook возвращает false, но все равно обновляется при каждом событии изменения.
Вот мой код:
$(document).ready(function() {
var converter = Markdown.getSanitizingConverter();
Markdown.Extra.init(converter, {table_class: "table table-striped"});
var editor = new Markdown.Editor(converter);
editor.hooks.chain("onPreviewRefresh", function () {
console.debug("the preview has been updated");
});
editor.run();
(function() {
$('#wmd-preview').hide();
$('button.preview').click(function() {
editor.refreshPreview();
$('#wmd-editor').hide();
$('#wmd-preview').show();
});
$('button.edit').click(function() {
$('#wmd-preview').hide();
$('#wmd-editor').show();
});
})();
});
Обновить:
Закомментирование следующей строки ( строка 909 здесь) фактически выполнит то, что я хочу:
//timeout = setTimeout(makePreviewHtml, delay);
Тем не менее, я бы беспокоился о непреднамеренных побочных эффектах, поэтому я бы предпочел более хирургический подход - предпочтительно тот, который не требует изменения исходного кода редактора.
2 ответа
Обновление, которое я добавил к своему вопросу, фактически привело меня к ответу.
По-видимому, startType
var здесь в функции PreviewManager была предоставлена специально для этой цели. Меняя это от delayed
в manual
имеет желаемый эффект (надеюсь, без непредвиденных побочных эффектов).
Я бы чувствовал себя более уверенно, если бы установка была предложена как Markdown.Editor
Вариант конфигурации.
Есть одна функция называется refreshPreview()
который, согласно документам,
заставляет предварительный просмотр быть обновленным. Этот метод доступен только после вызова run().
Таким образом, вы, вероятно, можете вызвать эту функцию в обработчике кликов для кнопки, которую вы создадите для управления обновлениями, например:
var converter1 = Markdown.getSanitizingConverter();
var editor1 = new Markdown.Editor(converter1);
editor1.run();
editor1.refreshPreview(); //<- something like this
Теперь, что касается предотвращения обновления при каждом событии нажатия клавиши и нажатия клавиши (я думаю, именно так PageDown и делает это), я думаю, у вас есть как минимум два варианта:
- Напишите свой собственный код javascript/jquery, который переопределяет события нажатия клавиш/нажатия клавиш для области ввода текста
Редактировать файл
Markdown.Editor.js
(вокруг строк 593-627 в моей версии), чтобы закомментировать строки, в которых установлены обработчики событий для событий нажатия клавиш и нажатия клавиш. В частности, я думаю, что следующая строка запускает обновления из ключевых событий:util.addEvent(panels.input, "keydown", handleModeChange);
Надеюсь это поможет.