| <html> | |
| <body> | |
| Script execution test | |
| <div id="b1"></div> | |
| <div id="b2"></div> | |
| <div id="b3"></div> | |
| <script id="emptyscript"></script> | |
| <script id="put_text_script">2+2</script> | |
| <script> | |
| function ok(b, msg) { | |
| return external.ok(b, msg); | |
| } | |
| var executed = false; | |
| var extern_cnt = 0; | |
| var exec_cnt; | |
| function testWriteScript() { | |
| var len = document.getElementsByTagName('div').length; | |
| ok(len === 3, "init length = " + len); | |
| document.write("<script>" | |
| + "var len = document.getElementsByTagName('div').length;" | |
| + "ok(len === 3, 'unexpected length ' + len);" | |
| + "executed = true;" | |
| + "<" + "/script>"); | |
| len = document.getElementsByTagName('script').length; | |
| ok(len === 4, "script col length = " + len); | |
| ok(executed, "written script not executed"); | |
| } | |
| function testPutSrc() { | |
| var elem = document.getElementById("emptyscript"); | |
| ok(extern_cnt === 0, "extern_cnt = " + extern_cnt + " expected 0"); | |
| elem.src = "externscr.js"; | |
| ok(extern_cnt === 0, "extern_cnt = " + extern_cnt + " expected 0"); | |
| } | |
| function testPutText() { | |
| var elem = document.getElementById("put_text_script"); | |
| exec_cnt = 0; | |
| elem.text = "exec_cnt++;"; | |
| ok(exec_cnt === 1, "put_text_script exec_cnt " + exec_cnt); | |
| exec_cnt = 0; | |
| elem.text = "exec_cnt++;"; | |
| ok(exec_cnt === 1, "put_text_script exec_cnt " + exec_cnt); | |
| } | |
| try { | |
| testWriteScript(); | |
| testPutSrc(); | |
| testPutText(); | |
| }catch(e) { | |
| ok(false, "Got an exception " + e.message); | |
| } | |
| function testPutSrc2() { | |
| var elem, elem2; | |
| elem = document.createElement("script"); | |
| elem.src = "externscr.js"; | |
| ok(extern_cnt === 1, "extern_cnt = " + extern_cnt + " expected 1"); | |
| document.body.appendChild(elem); | |
| ok(extern_cnt === 2, "extern_cnt = " + extern_cnt + " expected 2"); | |
| elem = document.createElement("script"); | |
| document.body.appendChild(elem); | |
| ok(extern_cnt === 2, "extern_cnt = " + extern_cnt + " expected 2"); | |
| elem.src = "externscr.js"; | |
| ok(extern_cnt === 3, "extern_cnt = " + extern_cnt + " expected 3"); | |
| elem2 = document.createElement("div"); | |
| elem = document.createElement("script"); | |
| elem.src = "externscr.js"; | |
| ok(extern_cnt === 3, "extern_cnt = " + extern_cnt + " expected 3"); | |
| elem2.appendChild(elem); | |
| document.body.appendChild(elem2); | |
| ok(extern_cnt === 4, "extern_cnt = " + extern_cnt + " expected 4"); | |
| } | |
| function testPutText2() { | |
| var elem; | |
| elem = document.createElement("script"); | |
| exec_cnt = 0; | |
| elem.text = "exec_cnt++;"; | |
| ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); | |
| document.body.appendChild(elem); | |
| ok(exec_cnt === 1, "script exec_cnt " + exec_cnt); | |
| exec_cnt = 0; | |
| elem.text = "exec_cnt++;"; | |
| ok(exec_cnt === 1, "script exec_cnt " + exec_cnt); | |
| elem.src = "externscr.js"; | |
| ok(extern_cnt === 5, "extern_cnt = " + extern_cnt + " expected 5"); | |
| exec_cnt = 0; | |
| ok(extern_cnt === 5, "> extern_cnt = " + extern_cnt + " expected 5"); | |
| elem.text = "exec_cnt++;"; /* forces evaluation, but src will be executed */ | |
| ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); | |
| ok(extern_cnt === 6, "< extern_cnt = " + extern_cnt + " expected 6"); | |
| elem.text = "exec_cnt++;"; /* forces evaluation, but src will be executed */ | |
| ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); | |
| ok(extern_cnt === 7, "< extern_cnt = " + extern_cnt + " expected 6"); | |
| elem = document.createElement("script"); | |
| exec_cnt = 0; | |
| elem.text = "exec_cnt++;"; | |
| ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); | |
| elem.src = "externscr.js"; | |
| ok(extern_cnt === 7, "extern_cnt = " + extern_cnt + " expected 7"); | |
| document.body.appendChild(elem); | |
| ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); | |
| ok(extern_cnt === 8, "extern_cnt = " + extern_cnt + " expected 8"); | |
| } | |
| document.body.onload = function() { | |
| ok(extern_cnt === 1, "extern_cnt = " + extern_cnt); | |
| try { | |
| testPutSrc2(); | |
| testPutText2(); | |
| }catch(e) { | |
| ok(false, "got an exception " + e.message); | |
| } | |
| external.reportSuccess(); | |
| } | |
| </script> | |
| <script> | |
| ok(extern_cnt === 1, "extern_cnt = " + extern_cnt); | |
| </script> | |
| <div id="a1"></div> | |
| <div id="a2"></div> | |
| <div id="b3"></div> | |
| </body> | |
| </html> |