<!DOCTYPE html> <html> <head> <title>require.js: After Load</title> <script type="text/javascript" src="doh/runner.js"></script> <script type="text/javascript" src="doh/_browserRunner.js"></script> <script type="text/javascript"> var d, s, head; function goRequire() { //Need a hack to trigger require.pageLoaded() for pre Firefox 3.6 browsers. var ff = parseFloat(navigator.userAgent.split("Firefox/")[1]) || null; if (ff && ff < 3.6) { require.pageLoaded(); } require({ paths: { domReady: "../../domReady/domReady" } }, ["require", "simple", "domReady"], function (require, simple, domReady) { domReady(function() { doh.is("blue", simple.color); //Now test another script getting loaded will see //document.readyState === "complete". var s = document.createElement("script"); s.src = "afterloadreadystate.js"; s.charset = "utf-8"; head.appendChild(s); }); } ); } function loadRequire() { var readyRegExp = /complete|loaded/; function onScriptLoad(evt) { var node = evt.target || evt.srcElement; if (evt.type === "load" || readyRegExp.test(node.readyState)) { //Clean up script binding, otherwise, Opera in particular //may trigger it again. if (node.removeEventListener) { node.removeEventListener("load", onScriptLoad, false); } else { //Probably IE. node.detachEvent("onreadystatechange", onScriptLoad); } goRequire(); } }; //Create script tag for require.js s = document.createElement("script"); s.src = "../require.js"; s.charset = "utf-8"; //Set up load listener. if (s.addEventListener) { s.addEventListener("load", onScriptLoad, false); } else { //Probably IE. s.attachEvent("onreadystatechange", onScriptLoad); } head = (document.getElementsByTagName("head")[0] || document.getElementsByTagName("html")[0]); head.appendChild(s); } doh.register( "afterload", [ { name: "afterload", timeout: 5000, runTest: function() { d = new doh.Deferred(); return d; } } ] ); doh.run(); </script> </head> <body onload="loadRequire()"> <h1>require.js: After Load Test</h1> <p>Tests adding require after the page loads, and tests that require.js patches up document.readyState for Firefox less than 3.6.</p> <p>Check console for messages</p> </body> </html>