diff --git a/copyparty/web/md.js b/copyparty/web/md.js index 05713541..222eea1e 100644 --- a/copyparty/web/md.js +++ b/copyparty/web/md.js @@ -73,6 +73,26 @@ function statify(obj) { })(); +// image load handler +var img_load = (function () { + var r = {}; + r.callbacks = []; + + function fire() { + for (var a = 0; a < r.callbacks.length; a++) + r.callbacks[a](); + } + + var timeout = null; + r.done = function () { + clearTimeout(timeout); + timeout = setTimeout(fire, 500); + }; + + return r; +})(); + + // faster than replacing the entire html (chrome 1.8x, firefox 1.6x) function copydom(src, dst, lv) { var sc = src.childNodes, @@ -356,6 +376,10 @@ function convert_markdown(md_text, dest_dom) { copydom(md_dom, dest_dom, 0); + var imgs = dest_dom.getElementsByTagName('img'); + for (var a = 0, aa = imgs.length; a < aa; a++) + imgs[a].onload = img_load.done; + if (ext && ext[0].render2) try { ext[0].render2(dest_dom); @@ -490,6 +514,7 @@ function init_toc() { // "main" :p convert_markdown(dom_src.value, dom_pre); var toc = init_toc(); +img_load.callbacks = [toc.refresh]; // scroll handler diff --git a/copyparty/web/md2.js b/copyparty/web/md2.js index ab6aba83..d62fe1aa 100644 --- a/copyparty/web/md2.js +++ b/copyparty/web/md2.js @@ -127,6 +127,12 @@ var draw_md = (function () { })(); +// discard TOC callback, just regen editor scroll map +img_load.callbacks = [function () { + map_pre = genmap(dom_pre, map_pre); +}]; + + // resize handler redraw = (function () { function onresize() { @@ -136,7 +142,6 @@ redraw = (function () { dom_ref.style.width = getComputedStyle(dom_src).offsetWidth + 'px'; map_src = genmap(dom_ref, map_src); map_pre = genmap(dom_pre, map_pre); - dbg(document.body.clientWidth + 'x' + document.body.clientHeight); } function setsbs() { dom_wrap.setAttribute('class', '');