diff --git a/resources/marketplace.html b/resources/marketplace.html index 9a115b928e..58ece79d13 100644 --- a/resources/marketplace.html +++ b/resources/marketplace.html @@ -96,11 +96,11 @@ marked.use({ renderer: { - link (href, title, text) { + link({ href, title, text }) { return `${text}` }, - image (href, title, text) { + image({ href, title, text }) { let link = isRelative(href) if (link) { @@ -113,8 +113,20 @@ }, }) + // force fix Markdown content + function fixAllImageTagHref (content) { + const isRelativeImageSrc = (src) => src && !src.match(/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i) && isRelative(src) + + return content.replace(/]*>/gi, (img) => { + return img.replace(/\bsrc\s*=\s*(['"]?)([^'"\s>]+)\1/i, (attr, quote, src) => { + const link = isRelativeImageSrc(src) + return link ? attr.replace(src, fixLink(link)) : attr + }) + }) + } + // load exist points content - async function loadPage (points) { + async function loadPage(points) { setMsg('Loading ...') for (let url of points) { @@ -131,7 +143,7 @@ } } - content = marked.parse(content).replace('src="./', `src="${fixLink('')}`) + content = marked.parse(fixAllImageTagHref(content)) setContent(DOMPurify.sanitize(content)) }