每次内容更改时,实时HTML预览不会更新整个预览

时间:2014-01-30 21:32:48

标签: javascript jquery html iframe

我正在使用 node-webkit (使用HTML / JavaScript的本机应用程序),marked(js markdown编译器)和 CodeMirror 构建markdown编辑器(代码编辑)。所以我基本上使用作为本机应用程序运行的 HTML JavaScript (+ jQuery)来构建markdown编辑器。

其中一个功能是它具有已编译HTML的实时预览。此实时预览位于iframe内,每次用户更改CodeMirror编辑器中的任何内容时都会更新。问题是当预览更新iframe内的整个文档时会被替换。因此,每次按键时,它基本上都会重新加载整个网页。这不是非常有效,并且使整个应用程序运行缓慢。当您将Youtube视频等任何嵌入媒体添加到文档时,这也是一个问题,因为每次预览更新时它都会重新加载该视频。

我尝试通过添加计时器来解决问题,因此预览的更新速度不会超过每250毫秒一次。这解决了缓慢问题,但嵌入式媒体仍会在每次预览更新时重新加载。

我尝试了其他一些实时预览HTML /降价编辑器,除了StackEdit之外,大多数人都使用了相同的方法进行实时预览(除了StackEdit之外可能还有其他一些例子)。我注意到在StackEdit中,当您在文档中的某处嵌入YouTube视频,然后在文档中的其他位置编辑某些文本时,Youtube视频不会重新加载。这正是我需要的:仅更新预览中已更改的内容。如何让我的实时预览能够像这样工作?

  

注意:这是预览当前的更新方式:

var HTML = marked(CodeMirror.getValue());
$('iframe').contents().find('.content').html(HTML);
     

(每次发生这种情况时,间隔为250毫秒   codemirror编辑器的内容发生了变化。)

1 个答案:

答案 0 :(得分:0)

您可能正在寻找一种方法来将HTMLHTML_PREV之类的内容进行比较。如果是这种情况,您可能正在寻找HTML差异算法,例如htmldiff.js。您也可能对此related question感兴趣。