This is fairly niche, but it's kind of a fun little trick. Suppose that you've to implemented an interpreter for some language running inside a web browser, and you want to support script tags for that language.
Simply register a listener for DOMContentLoaded
in which you iterate
over all script
elements with the appropriate type
attribute. If a
src
attribute is specified then fetch that and execute the result,
otherwise execute the contents of the script
element:
// ===================== // // BROWSER LANGUAGE SHIM // // ===================== // (function () { const SCRIPT_LANGUAGE_NAME = 'brainfuck'; const SCRIPT_TAG_TYPE = 'text/brainfuck'; const SCRIPT_EXECUTE = ExecuteBrainfuck; // Make sure this setup code only ever runs once if (!window.scriptLanguages) { window.scriptLanguages = {}; } if (window.scriptLanguages[SCRIPT_LANGUAGE_NAME]) { return; } window.scriptLanguages[SCRIPT_LANGUAGE_NAME] = true; document.addEventListener('DOMContentLoaded', async function () { console.log("Locating and Executing Scripts of Type", SCRIPT_TAG_TYPE); var scripts = document.getElementsByTagName('script'); for (var i = 0; i < scripts.length; i++) { if (scripts[i].type == SCRIPT_TAG_TYPE) { if (scripts[i].src) { console.log('Executing Script:', scripts[i].src); const response = await fetch(scripts[i].src); if (!response.ok) { console.error('Unable to fetch script', scripts[i].src); throw new Error(`unable to fetch script '${scripts[i].src}'`); } const code = await response.text(); await SCRIPT_EXECUTE(code); } else { console.log('Executing Script:', scripts[i].text); await SCRIPT_EXECUTE(scripts[i].text); } } } }); })();For a full example, see: brainfuck.html.