diff --git a/docs/index.js b/docs/index.js index 3a7f6fa..973c4f1 100644 --- a/docs/index.js +++ b/docs/index.js @@ -26,8 +26,9 @@ } const renderers = { - "application/ld+json": "recipe", - "javascript": "bookmarklet", + "application/ld+json": {script:"recipe"}, + "javascript": {script:"bookmarklet"}, + "web3": {script:"web3", mode:"frame"}, } window.addEventListener("message", function(e) { @@ -95,7 +96,7 @@ renderMode = "download"; } - const renderer = info.params?.render || renderers[info.mediatype]; + const renderer = info.params?.render || renderers[info.mediatype].script; if (renderer) { var script = renderer; if (script.indexOf("/") == -1) script = location.origin + '/render/' + script + '.js' @@ -116,7 +117,7 @@ let scheme = fragment.substring(0,colon); let renderer = renderers[scheme]; if (renderer) { - return renderContentWithScript(renderer, title, fragment, fragment); + return renderContentWithScript(renderer.script, title, fragment, fragment); } return window.location.replace(fragment); } @@ -177,14 +178,16 @@ }; - const SCRIPT_LOADER = `data:text/html,` + const SCRIPT_LOADER = `` function renderContentWithScript(script, title, body, url) { if (script.indexOf("/") == -1) script = location.origin + '/render/' + script + '.js' iframe.onload = (() => { iframe.contentWindow.postMessage({script, url, title, body}, "*"); delete iframe.onload }); - iframe.src = SCRIPT_LOADER; + // writeDocContent(iframe.contentWindow.document, SCRIPT_LOADER) + // iframe.srcdoc = SCRIPT_LOADER; + iframe.src = "data:text/html," + SCRIPT_LOADER; } function writeDocContent(doc, content) { diff --git a/docs/render.js b/docs/render.js index 1a2d231..4c4b16f 100644 --- a/docs/render.js +++ b/docs/render.js @@ -1,16 +1,26 @@ window.el = function (tagName, attrs, ...children) { let l = document.createElement(tagName); Object.entries(attrs).forEach(([k,v]) => l[k] = v); - children.forEach((c) => l.appendChild(c)); + children.forEach((c) => l.appendChild(typeof c == "string" ? document.createTextNode(c) : c)); return l; } -function loadScript(src) { - document.head.appendChild(el("script", { src })); - document.onload = () => { - document.write("hi"); +function loadScript(src, callback) { + let script = el("script", { src }); + script.addEventListener('load', function(e) { + console.log("Loaded", src); + if (callback) callback(e); + }); + document.head.appendChild(script); +} - } +function async(u, c) { + var d = document, t = 'script', + o = d.createElement(t), + s = d.getElementsByTagName(t)[0]; + o.src = '//' + u; + if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); } + s.parentNode.insertBefore(o, s); } function loadSyle(href) { @@ -21,7 +31,6 @@ window.addEventListener("message", function(e) { var base = el('base', {href: e.data.script}); document.head.appendChild(base); - window.params = e.data; window.params.origin = e.origin; console.log("Rendering with", e.data.script, e.data) diff --git a/docs/render/recipe.css b/docs/render/recipe.css index 3a7977b..fbdc030 100644 --- a/docs/render/recipe.css +++ b/docs/render/recipe.css @@ -91,7 +91,8 @@ span.number { text-align: center; font-size: 10px; line-height: 16px; - opacity:0.7 + opacity:0.7; + display:none; } .number.big { font-size:8px;