我从医生们中注意到,PageDown提供了一个refreshPreview方法。我想关闭实时编辑,并使用此方法仅在用户按预览按钮时进行转换。
我尝试让onPreviewRefresh钩子返回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);然而,我会担心意外的副作用,所以我更喜欢外科手术的方法--最好是不需要修改编辑器源代码的方法。
发布于 2014-05-04 02:56:25
我在问题中添加的更新实际上给了我一个答案。
显然,这里的startType变量在PreviewManager函数中是专门为此目的提供的。将其从delayed更改为manual具有所需的效果(希望没有意外的副作用)。
如果设置是作为Markdown.Editor配置选项提供的,我会感到更放心。
发布于 2014-05-03 16:27:26
根据文档,有一个叫做refreshPreview()的函数,
强制预览更新。只有在调用run()之后才能使用此方法。
因此,您可能可以在单击处理程序中将该函数调用为控制刷新而创建的按钮,例如(例如)。
var converter1 = Markdown.getSanitizingConverter();
var editor1 = new Markdown.Editor(converter1);
editor1.run();
editor1.refreshPreview(); //<- something like this现在,关于防止每个按键和按键事件的刷新(我猜PageDown就是这样做的),我认为您至少有两个选项
Markdown.Editor.js (在我的版本中围绕第593-627行),以便注释掉为、keypress、和按键事件设置事件处理程序的行。特别是,我认为是以下一行触发了关键事件的刷新:
util.addEvent(panels.input,"keydown",handleModeChange);希望这能有所帮助。
https://stackoverflow.com/questions/23446860
复制相似问题