1<html> 2<body> 3Script execution test 4<div id="b1"></div> 5<div id="b2"></div> 6<div id="b3"></div> 7<script id="emptyscript"></script> 8<script id="put_text_script">2+2</script> 9<script> 10function ok(b, msg) { 11 return external.ok(b, msg); 12} 13 14var executed = false; 15var extern_cnt = 0; 16var exec_cnt; 17 18function testWriteScript() { 19 var len = document.getElementsByTagName('div').length; 20 ok(len === 3, "init length = " + len); 21 22 document.write("<script>" 23 + "var len = document.getElementsByTagName('div').length;" 24 + "ok(len === 3, 'unexpected length ' + len);" 25 + "executed = true;" 26 + "<" + "/script>"); 27 28 len = document.getElementsByTagName('script').length; 29 ok(len === 4, "script col length = " + len); 30 ok(executed, "written script not executed"); 31} 32 33function testPutSrc() { 34 var elem = document.getElementById("emptyscript"); 35 36 ok(extern_cnt === 0, "extern_cnt = " + extern_cnt + " expected 0"); 37 elem.src = "externscr.js"; 38 ok(extern_cnt === 0, "extern_cnt = " + extern_cnt + " expected 0"); 39} 40 41function testPutText() { 42 var elem = document.getElementById("put_text_script"); 43 44 exec_cnt = 0; 45 elem.text = "exec_cnt++;"; 46 ok(exec_cnt === 1, "put_text_script exec_cnt " + exec_cnt); 47 48 exec_cnt = 0; 49 elem.text = "exec_cnt++;"; 50 ok(exec_cnt === 1, "put_text_script exec_cnt " + exec_cnt); 51} 52 53try { 54 testWriteScript(); 55 testPutSrc(); 56 testPutText(); 57}catch(e) { 58 ok(false, "Got an exception " + e.message); 59} 60 61function testPutSrc2() { 62 var elem, elem2; 63 64 elem = document.createElement("script"); 65 elem.src = "externscr.js"; 66 ok(extern_cnt === 1, "extern_cnt = " + extern_cnt + " expected 1"); 67 document.body.appendChild(elem); 68 ok(extern_cnt === 2, "extern_cnt = " + extern_cnt + " expected 2"); 69 70 elem = document.createElement("script"); 71 document.body.appendChild(elem); 72 ok(extern_cnt === 2, "extern_cnt = " + extern_cnt + " expected 2"); 73 elem.src = "externscr.js"; 74 ok(extern_cnt === 3, "extern_cnt = " + extern_cnt + " expected 3"); 75 76 elem2 = document.createElement("div"); 77 elem = document.createElement("script"); 78 elem.src = "externscr.js"; 79 ok(extern_cnt === 3, "extern_cnt = " + extern_cnt + " expected 3"); 80 elem2.appendChild(elem); 81 document.body.appendChild(elem2); 82 ok(extern_cnt === 4, "extern_cnt = " + extern_cnt + " expected 4"); 83} 84 85function testPutText2() { 86 var elem; 87 88 elem = document.createElement("script"); 89 exec_cnt = 0; 90 elem.text = "exec_cnt++;"; 91 ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); 92 93 document.body.appendChild(elem); 94 ok(exec_cnt === 1, "script exec_cnt " + exec_cnt); 95 exec_cnt = 0; 96 elem.text = "exec_cnt++;"; 97 ok(exec_cnt === 1, "script exec_cnt " + exec_cnt); 98 99 elem.src = "externscr.js"; 100 ok(extern_cnt === 5, "extern_cnt = " + extern_cnt + " expected 5"); 101 102 exec_cnt = 0; 103 ok(extern_cnt === 5, "> extern_cnt = " + extern_cnt + " expected 5"); 104 elem.text = "exec_cnt++;"; /* forces evaluation, but src will be executed */ 105 ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); 106 ok(extern_cnt === 6, "< extern_cnt = " + extern_cnt + " expected 6"); 107 108 elem = document.createElement("script"); 109 exec_cnt = 0; 110 elem.text = "exec_cnt++;"; 111 ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); 112 elem.src = "externscr.js"; 113 ok(extern_cnt === 6, "extern_cnt = " + extern_cnt + " expected 6"); 114 115 document.body.appendChild(elem); 116 ok(exec_cnt === 0, "script exec_cnt " + exec_cnt); 117 ok(extern_cnt === 7, "extern_cnt = " + extern_cnt + " expected 7"); 118} 119 120document.body.onload = function() { 121 ok(extern_cnt === 1, "extern_cnt = " + extern_cnt); 122 try { 123 testPutSrc2(); 124 testPutText2(); 125 }catch(e) { 126 ok(false, "got an exception " + e.message); 127 } 128 129 external.reportSuccess(); 130} 131</script> 132<script> 133 ok(extern_cnt === 1, "extern_cnt = " + extern_cnt); 134</script> 135<div id="a1"></div> 136<div id="a2"></div> 137<div id="b3"></div> 138</body> 139</html> 140