envjs 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +113 -0
- data/bin/envjsrb +239 -0
- data/bin/jquery-1.2.6-test.js +33 -0
- data/bin/jquery-1.3.1-test.js +33 -0
- data/bin/jquery-1.3.2-test.js +106 -0
- data/bin/prototype-1.6.0.3-test.js +82 -0
- data/bin/prototype_1.6.0.3_tmpl.txt +27 -0
- data/bin/test-jquery.sh +58 -0
- data/bin/test-prototype.sh +54 -0
- data/bin/tidy +0 -0
- data/lib/envjs/env.js +21549 -0
- data/lib/envjs/net/cgi.rb +94 -0
- data/lib/envjs/net/file.rb +75 -0
- data/lib/envjs/net.rb +3 -0
- data/lib/envjs/options.rb +11 -0
- data/lib/envjs/runtime.rb +280 -0
- data/lib/envjs/tempfile.rb +24 -0
- data/lib/envjs.rb +23 -0
- data/test/call-load-test.js +15 -0
- data/test/debug.js +53 -0
- data/test/firebug/errorIcon.png +0 -0
- data/test/firebug/firebug.css +209 -0
- data/test/firebug/firebug.html +23 -0
- data/test/firebug/firebug.js +672 -0
- data/test/firebug/firebugx.js +10 -0
- data/test/firebug/infoIcon.png +0 -0
- data/test/firebug/warningIcon.png +0 -0
- data/test/fixtures/html/events.html +171 -0
- data/test/fixtures/html/iframe1.html +46 -0
- data/test/fixtures/html/iframe1a.html +46 -0
- data/test/fixtures/html/iframe2.html +45 -0
- data/test/fixtures/html/iframe3.html +28 -0
- data/test/fixtures/html/iframeN.html +57 -0
- data/test/fixtures/html/malformed.html +181 -0
- data/test/fixtures/html/scope.html +81 -0
- data/test/fixtures/html/trivial.html +19 -0
- data/test/fixtures/html/with_js.html +26 -0
- data/test/fixtures/images/icon-blue.png +0 -0
- data/test/fixtures/js/external_script.js +1 -0
- data/test/fixtures/js/script.js +1 -0
- data/test/fixtures/js/script_error.js +2 -0
- data/test/html/events.html +171 -0
- data/test/html/iframe1.html +46 -0
- data/test/html/iframe1a.html +46 -0
- data/test/html/iframe2.html +45 -0
- data/test/html/iframe3.html +30 -0
- data/test/html/iframeN.html +57 -0
- data/test/html/malformed.html +181 -0
- data/test/html/scope.html +87 -0
- data/test/html/script.js +1 -0
- data/test/html/trivial.html +19 -0
- data/test/html/with_js.html +26 -0
- data/test/index.html +328 -0
- data/test/java-prototype.js +9 -0
- data/test/primary-tests.js +24 -0
- data/test/prototype-test.js +13 -0
- data/test/qunit/qunit/qunit.css +17 -0
- data/test/qunit/qunit/qunit.js +997 -0
- data/test/qunit.js +61 -0
- data/test/specs/dist/env.spec.js +1534 -0
- data/test/specs/envjs.spec.css +46 -0
- data/test/specs/parser/html.js +31 -0
- data/test/specs/parser/spec.html +40 -0
- data/test/specs/parser/xml.js +31 -0
- data/test/specs/qunit.bdd.js +210 -0
- data/test/specs/qunit.css +17 -0
- data/test/specs/qunit.js +997 -0
- data/test/specs/template/spec-0.js +31 -0
- data/test/specs/template/spec-1.js +31 -0
- data/test/specs/template/spec.html +40 -0
- data/test/specs/window/css.js +23 -0
- data/test/specs/window/dialog.js +25 -0
- data/test/specs/window/document.js +23 -0
- data/test/specs/window/event.js +25 -0
- data/test/specs/window/history.js +34 -0
- data/test/specs/window/location.js +34 -0
- data/test/specs/window/navigator.js +71 -0
- data/test/specs/window/screen.js +42 -0
- data/test/specs/window/spec.html +48 -0
- data/test/specs/window/timer.js +26 -0
- data/test/specs/window/window.js +53 -0
- data/test/specs/xhr/spec.html +47 -0
- data/test/specs/xhr/xhr.js +31 -0
- data/test/test.js +10 -0
- data/test/unit/dom.js +44 -0
- data/test/unit/elementmembers.js +60 -0
- data/test/unit/events.js +195 -0
- data/test/unit/fixtures/external_script.js +1 -0
- data/test/unit/iframe.js +234 -0
- data/test/unit/multi-window.js +212 -0
- data/test/unit/nu.validator.js +34 -0
- data/test/unit/onload.js +90 -0
- data/test/unit/parser.js +121 -0
- data/test/unit/prototypecompat.js +22 -0
- data/test/unit/proxy.js +6 -0
- data/test/unit/scope.js +209 -0
- data/test/unit/timer.js +115 -0
- data/test/unit/window.js +41 -0
- data/test/vendor/jQuery/README +2 -0
- data/test/vendor/prototype-1.6.0.3.js +4320 -0
- metadata +164 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
|
3
|
+
<!--
|
4
|
+
* This file is a component of env.js,
|
5
|
+
* http://github.com/gleneivey/env-js/commits/master/README
|
6
|
+
* a Pure JavaScript Browser Environment
|
7
|
+
* Copyright 2009 John Resig, licensed under the MIT License
|
8
|
+
* http://www.opensource.org/licenses/mit-license.php
|
9
|
+
-->
|
10
|
+
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
|
12
|
+
lang="en" dir="ltr" id="html">
|
13
|
+
<head>
|
14
|
+
<title>(event handler) scope testing, env.js units, IFRAME content page
|
15
|
+
</title>
|
16
|
+
</head>
|
17
|
+
<body>
|
18
|
+
<script>
|
19
|
+
function appendAPara(doc, target, pId, pMsg){
|
20
|
+
var t = doc.createTextNode(pMsg);
|
21
|
+
var p = doc.createElement("p");
|
22
|
+
p.setAttribute("id", pId);
|
23
|
+
p.appendChild(t);
|
24
|
+
target.appendChild(p);
|
25
|
+
}
|
26
|
+
|
27
|
+
function makeAPara(){
|
28
|
+
var paraText =
|
29
|
+
"This is a paragraph, made dynamically, with the following components: ";
|
30
|
+
for (var i=1; (i) != arguments.length; i++)
|
31
|
+
paraText += "--" + arguments[i] + "-- ";
|
32
|
+
appendAPara(document, document.getElementById('div1'),
|
33
|
+
arguments[0], paraText);
|
34
|
+
}
|
35
|
+
|
36
|
+
aVar = "Strict";
|
37
|
+
function checkLexicalScoping(target){
|
38
|
+
appendAPara(document, target, "lex",
|
39
|
+
"Lexical scoping is " + aVar);
|
40
|
+
}
|
41
|
+
|
42
|
+
// these variables are used in the script block for div3, below.
|
43
|
+
// Intentionally not using 'var' so these go into the global space
|
44
|
+
bVar = 42;
|
45
|
+
target = 'p7';
|
46
|
+
</script>
|
47
|
+
|
48
|
+
<img id="img1" src="img.png" onclick="appendAPara(document, document.getElementsByTagName('body')[0], 'p1', 'img1 click');" />
|
49
|
+
|
50
|
+
<div id="div1"
|
51
|
+
onclick="appendAPara(document, this, 'p2', 'div1 click');" >
|
52
|
+
This div has some unencapsulated text in it, which we'll follow
|
53
|
+
with a 'p' element.
|
54
|
+
</div>
|
55
|
+
|
56
|
+
<div id="div1a"
|
57
|
+
onclick="try { var x = $env;} catch(e){ appendAPara(document, this, 'p2a', 'div1a click') };" >
|
58
|
+
This div has some unencapsulated text in it, which we'll follow
|
59
|
+
with a 'p' element.
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="div2" align="center"
|
63
|
+
onclick="aVar='Overridden!'; checkLexicalScoping(this);">
|
64
|
+
<form id="form1" action="post-url" method="post">
|
65
|
+
<input id="text1" type="text" size="42"
|
66
|
+
onchange="makeAPara('p3', value, type, size, action, align);"
|
67
|
+
/>
|
68
|
+
</form>
|
69
|
+
</div>
|
70
|
+
|
71
|
+
<div id="div3">
|
72
|
+
<p id="p4">
|
73
|
+
More text. This time, expect event handler to append another
|
74
|
+
sentence to this paragraph.
|
75
|
+
</p>
|
76
|
+
</div>
|
77
|
+
<script>
|
78
|
+
target = "p4"; // already defined in global, so modify not redefine
|
79
|
+
document.getElementById('div3').onclick = function(){
|
80
|
+
var targetElement = document.getElementById(target);
|
81
|
+
var t = document.createTextNode("Third sentence contains the number " +
|
82
|
+
bVar + ".");
|
83
|
+
targetElement.appendChild(t);
|
84
|
+
}
|
85
|
+
</script>
|
86
|
+
</body>
|
87
|
+
</html>
|
data/test/html/script.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
//
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
|
3
|
+
<!--
|
4
|
+
* This file is a component of env.js,
|
5
|
+
* http://github.com/gleneivey/env-js/commits/master/README
|
6
|
+
* a Pure JavaScript Browser Environment
|
7
|
+
* Copyright 2009 John Resig, licensed under the MIT License
|
8
|
+
* http://www.opensource.org/licenses/mit-license.php
|
9
|
+
-->
|
10
|
+
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
|
12
|
+
lang="en" dir="ltr" id="html">
|
13
|
+
<head>
|
14
|
+
<title>Nearly-empty HTML page</title>
|
15
|
+
</head>
|
16
|
+
<body>
|
17
|
+
<p id="oneP">Nearly-empty HTML page</p>
|
18
|
+
</body>
|
19
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<script type="text/javascript">
|
4
|
+
var x = true;
|
5
|
+
if(1 == 1 && 2 == 3)
|
6
|
+
x = false;
|
7
|
+
</script>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<h1 id="HeaderLevel1">Hello, "World"!</h1>
|
11
|
+
|
12
|
+
<script type="text/javascript">
|
13
|
+
aWindowScopeVariable = "hello, scope";
|
14
|
+
function getTestVariables(){
|
15
|
+
var testVal = null;
|
16
|
+
try { testVal = notAlwaysPresentVariable; }
|
17
|
+
catch (e){}
|
18
|
+
|
19
|
+
return [ aWindowScopeVariable, testVal ];
|
20
|
+
}
|
21
|
+
function setTestVariable(newValue){
|
22
|
+
notAlwaysPresentVariable = newValue;
|
23
|
+
}
|
24
|
+
</script>
|
25
|
+
</body>
|
26
|
+
</html>
|
data/test/index.html
ADDED
@@ -0,0 +1,328 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr" id="html">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<title>jQuery Test Suite</title>
|
6
|
+
|
7
|
+
<script>
|
8
|
+
function testLinkOnload(){
|
9
|
+
var t = document.createTextNode(
|
10
|
+
'#styleCreatedByLinkOnloadEvent { color: red; }');
|
11
|
+
var s = document.createElement('style');
|
12
|
+
s.setAttribute('id', 'sCreatedByLinkOnload');
|
13
|
+
s.appendChild(t);
|
14
|
+
document.getElementsByTagName('head')[0].appendChild(s);
|
15
|
+
}
|
16
|
+
</script>
|
17
|
+
<script>
|
18
|
+
function testXMLSpecialCharacters(){
|
19
|
+
if(true && true && 0>-1){
|
20
|
+
var f = 0&1;
|
21
|
+
f&=1;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
</script>
|
25
|
+
<link rel="Stylesheet" media="screen" href="data/testsuite.css"
|
26
|
+
onload="try{testLinkOnload();}catch(e){;}" />
|
27
|
+
|
28
|
+
<script>var jQuery = "jQuery", $ = "$"; // For testing .noConflict()</script>
|
29
|
+
<script type="text/javascript" src="../dist/jquery.js"></script>
|
30
|
+
<script type="text/javascript" src="data/testrunner.js"></script>
|
31
|
+
<script type="text/javascript" src="unit/core.js"></script>
|
32
|
+
<script type="text/javascript" src="unit/dimensions.js"></script>
|
33
|
+
<script type="text/javascript" src="unit/selector.js"></script>
|
34
|
+
<script type="text/javascript" src="unit/event.js"></script>
|
35
|
+
<script type="text/javascript" src="unit/ajax.js"></script>
|
36
|
+
<script type="text/javascript" src="unit/fx.js"></script>
|
37
|
+
|
38
|
+
</head>
|
39
|
+
|
40
|
+
<body id="body">
|
41
|
+
<h1 id="header">jQuery Test Suite</h1>
|
42
|
+
<h2 id="banner"></h2>
|
43
|
+
<h2 id="userAgent"></h2>
|
44
|
+
|
45
|
+
<!-- Test HTML -->
|
46
|
+
<div id="nothiddendiv" style="height:1px;background:white;">
|
47
|
+
<div id="nothiddendivchild"></div>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<!-- this iframe is outside the #main so it won't reload constantly wasting time, but it means the tests must be "safe" and clean up after themselves -->
|
51
|
+
<script>
|
52
|
+
function iframeOnloadHandler(targetIframe){
|
53
|
+
var t = document.createTextNode(
|
54
|
+
'Paragraph created by execution of iframe-onload event handler.');
|
55
|
+
var p = document.createElement('p');
|
56
|
+
p.setAttribute('id', 'pCreatedByIframeOnload');
|
57
|
+
p.appendChild(t);
|
58
|
+
targetIframe.appendChild(p);
|
59
|
+
}
|
60
|
+
</script>
|
61
|
+
<iframe id="loadediframe" name="loadediframe" style="display:none;"
|
62
|
+
src="html/iframe1.html" onload="iframeOnloadHandler(this)">
|
63
|
+
</iframe>
|
64
|
+
<iframe id="emptyiframe" name="emtpyiframe" style="display:none;"></iframe>
|
65
|
+
|
66
|
+
<script>
|
67
|
+
var usingEnvjsSpecificJar = false, rhino = false;
|
68
|
+
try {
|
69
|
+
usingEnvjsSpecificJar = (( this.whichJarFile == "envjs" ) || this.multiwindow);
|
70
|
+
rhino = true;
|
71
|
+
} catch (e){;}
|
72
|
+
if (usingEnvjsSpecificJar){
|
73
|
+
eventFrameLoaded = eventFrameClicked = 0;
|
74
|
+
function eventOnloadHandler(){ eventFrameLoaded += 1;}
|
75
|
+
function eventOnclickHandler(){ eventFrameClicked += 1;}
|
76
|
+
|
77
|
+
document.write(' \
|
78
|
+
\x3ciframe id="eventsFrame" name="eventsFrame" \
|
79
|
+
src="html/events.html" \
|
80
|
+
onload="eventOnloadHandler();" \
|
81
|
+
onclick="eventOnclickHandler();" \
|
82
|
+
\x3e\x3c/iframe\x3e \
|
83
|
+
\x3ciframe id="scopeFrame" name="scopeFrame" \
|
84
|
+
src="html/scope.html" \
|
85
|
+
\x3e\x3c/iframe\x3e \
|
86
|
+
');
|
87
|
+
}
|
88
|
+
</script>
|
89
|
+
|
90
|
+
<script>
|
91
|
+
function imgOnloadEventHandler(){
|
92
|
+
var t = document.createTextNode(
|
93
|
+
'Paragraph created by execution of img-onload event handler.');
|
94
|
+
var p = document.createElement('p');
|
95
|
+
p.setAttribute('id', 'pCreatedByImgOnload');
|
96
|
+
p.appendChild(t);
|
97
|
+
document.getElementsByTagName('body')[0].appendChild(p);
|
98
|
+
}
|
99
|
+
</script>
|
100
|
+
<img id="anImg" src="html/img1.png"
|
101
|
+
onload="try{imgOnloadEventHandler();}catch(e){;}" />
|
102
|
+
|
103
|
+
<script>
|
104
|
+
function onloadHandlerThatShouldntExecute(){
|
105
|
+
var t = document.createTextNode(
|
106
|
+
'Paragraph created by execution of script *BAD* event handler.');
|
107
|
+
var p = document.createElement('p');
|
108
|
+
p.setAttribute('id', 'pShouldntBeCreated');
|
109
|
+
p.appendChild(t);
|
110
|
+
document.getElementsByTagName('body')[0].appendChild(p);
|
111
|
+
}
|
112
|
+
</script>
|
113
|
+
<script onload="onloadHandlerThatShouldntExecute();">
|
114
|
+
function scriptEventHandler(tag){
|
115
|
+
var t = document.createTextNode(
|
116
|
+
'Paragraph created by execution of script event handler.');
|
117
|
+
var p = document.createElement('p');
|
118
|
+
p.setAttribute('id', 'pCreatedByScript'+tag);
|
119
|
+
p.appendChild(t);
|
120
|
+
document.getElementsByTagName('body')[0].appendChild(p);
|
121
|
+
}
|
122
|
+
</script>
|
123
|
+
<script>
|
124
|
+
// Generic case: allow scripts (not on rhino, which can't detect failures)
|
125
|
+
if (!rhino && Envjs.scriptTypes) {
|
126
|
+
js_enabled = Envjs.scriptTypes["text/javascript"];
|
127
|
+
Envjs.scriptTypes["text/javascript"] = true;
|
128
|
+
}
|
129
|
+
</script>
|
130
|
+
<script src="html/missingScript.js"
|
131
|
+
onerror="try{scriptEventHandler('A');}catch(e){;}"
|
132
|
+
onload="try{scriptEventHandler('B');}catch(e){;}"></script>
|
133
|
+
<script>
|
134
|
+
// Rhino case: these will succeed anyway
|
135
|
+
if (rhino && Envjs.scriptTypes) {
|
136
|
+
js_enabled = Envjs.scriptTypes["text/javascript"];
|
137
|
+
Envjs.scriptTypes["text/javascript"] = true;
|
138
|
+
}
|
139
|
+
</script>
|
140
|
+
<script src="html/script.js"
|
141
|
+
onerror="try{scriptEventHandler('C');}catch(e){;}"
|
142
|
+
onload="try{scriptEventHandler('D');}catch(e){;}"></script>
|
143
|
+
<script>
|
144
|
+
Envjs.scriptTypes && (Envjs.scriptTypes["text/javascript"] = js_enabled);
|
145
|
+
</script>
|
146
|
+
|
147
|
+
<dl id="dl" style="display:none;">
|
148
|
+
<div id="main" style="display: none;">
|
149
|
+
<p id="firstp">See <a id="simon1" href="http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector" rel="bookmark">this blog entry</a> for more information.</p>
|
150
|
+
<p id="ap">
|
151
|
+
Here are some links in a normal paragraph: <a id="google" href="http://www.google.com/" title="Google!">Google</a>,
|
152
|
+
<a id="groups" href="http://groups.google.com/">Google Groups</a>.
|
153
|
+
This link has <code><a href="http://smin" id="anchor1">class="blog"</a></code>:
|
154
|
+
<a href="http://diveintomark.org/" class="blog" hreflang="en" id="mark">diveintomark</a>
|
155
|
+
|
156
|
+
</p>
|
157
|
+
<div id="foo">
|
158
|
+
<p id="sndp">Everything inside the red border is inside a div with <code>id="foo"</code>.</p>
|
159
|
+
<p lang="en" id="en">This is a normal link: <a id="yahoo" href="http://www.yahoo.com/" class="blogTest">Yahoo</a></p>
|
160
|
+
<p id="sap">This link has <code><a href="#2" id="anchor2">class="blog"</a></code>: <a href="http://simon.incutio.com/" class="blog link" id="simon">Simon Willison's Weblog</a></p>
|
161
|
+
|
162
|
+
</div>
|
163
|
+
<p id="first">Try them out:</p>
|
164
|
+
<ul id="firstUL"></ul>
|
165
|
+
<ol id="empty"></ol>
|
166
|
+
<form id="form" action="formaction">
|
167
|
+
<input type="text" name="action" value="Test" id="text1" maxlength="30"/>
|
168
|
+
<input type="text" name="text2" value="Test" id="text2" disabled="disabled"/>
|
169
|
+
<input type="radio" name="radio1" id="radio1" value="on"/>
|
170
|
+
|
171
|
+
<input type="radio" name="radio2" id="radio2" checked="checked"/>
|
172
|
+
<input type="checkbox" name="check" id="check1" checked="checked"/>
|
173
|
+
<input type="checkbox" id="check2" value="on"/>
|
174
|
+
|
175
|
+
<input type="hidden" name="hidden" id="hidden1"/>
|
176
|
+
<input type="text" style="display:none;" name="foo[bar]" id="hidden2"/>
|
177
|
+
|
178
|
+
<input type="text" id="name" name="name" value="name" />
|
179
|
+
|
180
|
+
<button id="button" name="button">Button</button>
|
181
|
+
|
182
|
+
<textarea id="area1" maxlength="30">foobar</textarea>
|
183
|
+
|
184
|
+
<select name="select1" id="select1">
|
185
|
+
<option id="option1a" class="emptyopt" value="">Nothing</option>
|
186
|
+
<option id="option1b" value="1">1</option>
|
187
|
+
<option id="option1c" value="2">2</option>
|
188
|
+
<option id="option1d" value="3">3</option>
|
189
|
+
</select>
|
190
|
+
<select name="select2" id="select2">
|
191
|
+
<option id="option2a" class="emptyopt" value="">Nothing</option>
|
192
|
+
<option id="option2b" value="1">1</option>
|
193
|
+
<option id="option2c" value="2">2</option>
|
194
|
+
<option id="option2d" selected="selected" value="3">3</option>
|
195
|
+
</select>
|
196
|
+
<select name="select3" id="select3" multiple="multiple">
|
197
|
+
<option id="option3a" class="emptyopt" value="">Nothing</option>
|
198
|
+
<option id="option3b" selected="selected" value="1">1</option>
|
199
|
+
<option id="option3c" selected="selected" value="2">2</option>
|
200
|
+
<option id="option3d" value="3">3</option>
|
201
|
+
</select>
|
202
|
+
|
203
|
+
<select id="test_value">
|
204
|
+
<option value="optionvalue" selected="selected">optiontext</option>
|
205
|
+
</select>
|
206
|
+
|
207
|
+
<select id="test_selecting">
|
208
|
+
<option value="0">option0</option>
|
209
|
+
<option value="1" selected="selected">option1</option>
|
210
|
+
<option value="2">option2</option>
|
211
|
+
</select>
|
212
|
+
|
213
|
+
<object id="object1" codebase="stupid">
|
214
|
+
<param name="p1" value="x1" />
|
215
|
+
<param name="p2" value="x2" />
|
216
|
+
</object>
|
217
|
+
|
218
|
+
<span id="台北Táiběi"></span>
|
219
|
+
<span id="台北" lang="中文"></span>
|
220
|
+
<span id="utf8class1" class="台北Táiběi 台北"></span>
|
221
|
+
<span id="utf8class2" class="台北"></span>
|
222
|
+
<span id="foo:bar" class="foo:bar"></span>
|
223
|
+
<span id="test.foo[5]bar" class="test.foo[5]bar"></span>
|
224
|
+
|
225
|
+
<foo_bar id="foobar">test element</foo_bar>
|
226
|
+
</form>
|
227
|
+
<b id="floatTest">Float test.</b>
|
228
|
+
<iframe id="iframe" name="iframe"></iframe>
|
229
|
+
<form id="lengthtest">
|
230
|
+
<input type="text" id="length" name="test"/>
|
231
|
+
<input type="text" id="idTest" name="id"/>
|
232
|
+
</form>
|
233
|
+
<table id="table"></table>
|
234
|
+
|
235
|
+
<div id="fx-queue">
|
236
|
+
<div id="fadein" class='chain test'>fadeIn<div>fadeIn</div></div>
|
237
|
+
<div id="fadeout" class='chain test out'>fadeOut<div>fadeOut</div></div>
|
238
|
+
|
239
|
+
<div id="show" class='chain test'>show<div>show</div></div>
|
240
|
+
<div id="hide" class='chain test out'>hide<div>hide</div></div>
|
241
|
+
|
242
|
+
<div id="togglein" class='chain test'>togglein<div>togglein</div></div>
|
243
|
+
<div id="toggleout" class='chain test out'>toggleout<div>toggleout</div></div>
|
244
|
+
|
245
|
+
|
246
|
+
<div id="slideup" class='chain test'>slideUp<div>slideUp</div></div>
|
247
|
+
<div id="slidedown" class='chain test out'>slideDown<div>slideDown</div></div>
|
248
|
+
|
249
|
+
<div id="slidetogglein" class='chain test'>slideToggleIn<div>slideToggleIn</div></div>
|
250
|
+
<div id="slidetoggleout" class='chain test out'>slideToggleOut<div>slideToggleOut</div></div>
|
251
|
+
</div>
|
252
|
+
|
253
|
+
<div id="fx-tests"></div>
|
254
|
+
|
255
|
+
<form id="testForm" action="#" method="get">
|
256
|
+
<textarea name="T3" rows="2" cols="15">?
|
257
|
+
Z</textarea>
|
258
|
+
<input type="hidden" name="H1" value="x" />
|
259
|
+
<input type="hidden" name="H2" />
|
260
|
+
<input name="PWD" type="password" value="" />
|
261
|
+
<input name="T1" type="text" />
|
262
|
+
<input name="T2" type="text" value="YES" readonly="readonly" />
|
263
|
+
<input type="checkbox" name="C1" value="1" />
|
264
|
+
<input type="checkbox" name="C2" />
|
265
|
+
<input type="radio" name="R1" value="1" />
|
266
|
+
<input type="radio" name="R1" value="2" />
|
267
|
+
<input type="text" name="My Name" value="me" />
|
268
|
+
<input type="reset" name="reset" value="NO" />
|
269
|
+
<select name="S1">
|
270
|
+
<option value="abc">ABC</option>
|
271
|
+
<option value="abc">ABC</option>
|
272
|
+
<option value="abc">ABC</option>
|
273
|
+
</select>
|
274
|
+
<select name="S2" multiple="multiple" size="3">
|
275
|
+
<option value="abc">ABC</option>
|
276
|
+
<option value="abc">ABC</option>
|
277
|
+
<option value="abc">ABC</option>
|
278
|
+
</select>
|
279
|
+
<select name="S3">
|
280
|
+
<option selected="selected">YES</option>
|
281
|
+
</select>
|
282
|
+
<select name="S4">
|
283
|
+
<option value="" selected="selected">NO</option>
|
284
|
+
</select>
|
285
|
+
<input type="submit" name="sub1" value="NO" />
|
286
|
+
<input type="submit" name="sub2" value="NO" />
|
287
|
+
<input type="image" name="sub3" value="NO" />
|
288
|
+
<button name="sub4" type="submit" value="NO">NO</button>
|
289
|
+
<input name="D1" type="text" value="NO" disabled="disabled" />
|
290
|
+
<input type="checkbox" checked="checked" disabled="disabled" name="D2" value="NO" />
|
291
|
+
<input type="radio" name="D3" value="NO" checked="checked" disabled="disabled" />
|
292
|
+
<select name="D4" disabled="disabled">
|
293
|
+
<option selected="selected" value="NO">NO</option>
|
294
|
+
</select>
|
295
|
+
</form>
|
296
|
+
<div id="moretests">
|
297
|
+
<form>
|
298
|
+
<div id="checkedtest" style="display:none;">
|
299
|
+
<input type="radio" name="checkedtestradios" checked="checked"/>
|
300
|
+
<input type="radio" name="checkedtestradios" value="on"/>
|
301
|
+
<input type="checkbox" name="checkedtestcheckboxes" checked="checked"/>
|
302
|
+
<input type="checkbox" name="checkedtestcheckboxes" />
|
303
|
+
</div>
|
304
|
+
</form>
|
305
|
+
<div id="nonnodes"><span>hi</span> there <!-- mon ami --></div>
|
306
|
+
<div id="t2037">
|
307
|
+
<div><div class="hidden">hidden</div></div>
|
308
|
+
</div>
|
309
|
+
</div>
|
310
|
+
</div>
|
311
|
+
</dl>
|
312
|
+
|
313
|
+
<ol id="tests"></ol>
|
314
|
+
|
315
|
+
<!-- test execution of main pages's body-onload tag functionality -->
|
316
|
+
<script>
|
317
|
+
var bodyElem = document.getElementsByTagName('body')[0];
|
318
|
+
bodyElem.onload = function(){
|
319
|
+
var t = document.createTextNode(
|
320
|
+
'Look, a dynamically-generated paragraph!');
|
321
|
+
var p = document.createElement('p');
|
322
|
+
p.setAttribute('id', 'pCreatedByBodyOnload');
|
323
|
+
p.appendChild(t);
|
324
|
+
bodyElem.appendChild(p);
|
325
|
+
}
|
326
|
+
</script>
|
327
|
+
</body>
|
328
|
+
</html>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
load("test/qunit.js");
|
2
|
+
|
3
|
+
window.addEventListener("load",function(){
|
4
|
+
print("\n\nTesting with " + whichInterpreter);
|
5
|
+
print("Handling onload for test.js");
|
6
|
+
print("Loading tests.");
|
7
|
+
|
8
|
+
load("test/unit/dom.js");
|
9
|
+
load("test/unit/window.js");
|
10
|
+
load("test/unit/elementmembers.js");
|
11
|
+
if (multiwindow) {
|
12
|
+
load("test/unit/onload.js");
|
13
|
+
load("test/unit/scope.js"); // must come before frame.js changes page content
|
14
|
+
load("test/unit/iframe.js");
|
15
|
+
load("test/unit/events.js");
|
16
|
+
load("test/unit/multi-window.js");
|
17
|
+
}
|
18
|
+
load("test/unit/parser.js");
|
19
|
+
load("test/unit/timer.js");
|
20
|
+
|
21
|
+
print("Load complete. Running tests.");
|
22
|
+
});
|
23
|
+
|
24
|
+
window.location = "test/index.html";
|
@@ -0,0 +1,13 @@
|
|
1
|
+
load("test/qunit.js");
|
2
|
+
|
3
|
+
window.addEventListener("load",function(){
|
4
|
+
print("\n\nTesting with " + whichInterpreter);
|
5
|
+
print("Handling onload for test.js");
|
6
|
+
print("Loading tests.");
|
7
|
+
|
8
|
+
load("test/unit/prototypecompat.js");
|
9
|
+
|
10
|
+
print("Load complete. Running tests.");
|
11
|
+
});
|
12
|
+
|
13
|
+
window.location = "test/index.html";
|
@@ -0,0 +1,17 @@
|
|
1
|
+
h1#qunit-header { padding: 15px; font-size: large; background-color: #06b; color: white; font-family: 'trebuchet ms', verdana, arial; margin: 0; }
|
2
|
+
h1#qunit-header a { color: white; }
|
3
|
+
|
4
|
+
h2#qunit-banner { height: 2em; border-bottom: 1px solid white; background-color: #eee; margin: 0; font-family: 'trebuchet ms', verdana, arial; }
|
5
|
+
h2#qunit-banner.pass { background-color: green; }
|
6
|
+
h2#qunit-banner.fail { background-color: red; }
|
7
|
+
|
8
|
+
h2#qunit-userAgent { padding: 10px; background-color: #eee; color: black; margin: 0; font-size: small; font-weight: normal; font-family: 'trebuchet ms', verdana, arial; font-size: 10pt; }
|
9
|
+
|
10
|
+
div#qunit-testrunner-toolbar { background: #eee; border-top: 1px solid black; padding: 10px; font-family: 'trebuchet ms', verdana, arial; margin: 0; font-size: 10pt; }
|
11
|
+
|
12
|
+
ol#qunit-tests { font-family: 'trebuchet ms', verdana, arial; font-size: 10pt; }
|
13
|
+
ol#qunit-tests li strong { cursor:pointer; }
|
14
|
+
ol#qunit-tests .pass { color: green; }
|
15
|
+
ol#qunit-tests .fail { color: red; }
|
16
|
+
|
17
|
+
p#qunit-testresult { margin-left: 1em; font-size: 10pt; font-family: 'trebuchet ms', verdana, arial; }
|