smparkes-envjs 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/envjsrb +157 -73
- data/bin/jquery-1.3.2-test.js +11 -4
- data/lib/envjs/env.js +935 -11028
- data/lib/envjs/net/cgi.rb +94 -0
- data/lib/envjs/net/file.rb +4 -4
- data/lib/envjs/runtime.rb +80 -24
- data/test/call-load-test.js +0 -2
- 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/malformed.html +1 -0
- data/test/index.html +21 -19
- data/test/{primaryTests.js → primary-tests.js} +1 -3
- data/test/{prototype.js → prototype-test.js} +0 -2
- data/test/qunit/qunit/qunit.css +0 -0
- data/test/qunit/qunit/qunit.js +2 -2
- data/test/{qunit/qunit/qunit.js.smp → specs/dist/env.spec.js} +539 -7
- 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/{qunit.smp/qunit → specs}/qunit.css +0 -0
- data/test/{qunit.smp/qunit → specs}/qunit.js +2 -2
- 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/elementmembers.js +31 -0
- data/test/unit/nu.validator.js +34 -0
- data/test/unit/onload.js +1 -3
- data/test/unit/parser.js +106 -98
- data/test/unit/prototypecompat.js +2 -2
- data/test/vendor/jQuery/1.3.2/ChangeLog.txt +98 -0
- data/test/vendor/jQuery/1.3.2/GPL-LICENSE.txt +278 -0
- data/test/vendor/jQuery/1.3.2/MIT-LICENSE.txt +20 -0
- data/test/vendor/jQuery/1.3.2/Makefile +154 -0
- data/test/vendor/jQuery/1.3.2/README +67 -0
- data/test/vendor/jQuery/1.3.2/build/ant-contrib-0.6.jar +0 -0
- data/test/vendor/jQuery/1.3.2/build/build/min.js +11 -0
- data/test/vendor/jQuery/1.3.2/build/build/pack.js +19 -0
- data/test/vendor/jQuery/1.3.2/build/js/Packer.js +209 -0
- data/test/vendor/jQuery/1.3.2/build/js/ParseMaster.js +106 -0
- data/test/vendor/jQuery/1.3.2/build/js/Words.js +62 -0
- data/test/vendor/jQuery/1.3.2/build/js/base2.js +978 -0
- data/test/vendor/jQuery/1.3.2/build/js/jsmin.js +316 -0
- data/test/vendor/jQuery/1.3.2/build/js/json.js +117 -0
- data/test/vendor/jQuery/1.3.2/build/js/pack.js +316 -0
- data/test/vendor/jQuery/1.3.2/build/js/parse.js +105 -0
- data/test/vendor/jQuery/1.3.2/build/js/writeFile.js +19 -0
- data/test/vendor/jQuery/1.3.2/build/js/xml.js +25 -0
- data/test/vendor/jQuery/1.3.2/build/js.jar +0 -0
- data/test/vendor/jQuery/1.3.2/build/runtest/env.js +1 -0
- data/test/vendor/jQuery/1.3.2/build/runtest/test.js +106 -0
- data/test/vendor/jQuery/1.3.2/build/runtest/testrunner.js +197 -0
- data/test/vendor/jQuery/1.3.2/build/speed/benchmarker.css +65 -0
- data/test/vendor/jQuery/1.3.2/build/speed/benchmarker.js +181 -0
- data/test/vendor/jQuery/1.3.2/build/speed/index.html +72 -0
- data/test/vendor/jQuery/1.3.2/build/speed/jquery-basis.js +3549 -0
- data/test/vendor/jQuery/1.3.2/build/style.xsl +99 -0
- data/test/vendor/jQuery/1.3.2/build/yuicompressor-2.4.2.jar +0 -0
- data/test/vendor/jQuery/1.3.2/build.xml +123 -0
- data/test/vendor/jQuery/1.3.2/dist/jquery.js +4376 -0
- data/test/vendor/jQuery/1.3.2/reminder.txt +3 -0
- data/test/vendor/jQuery/1.3.2/src/ajax.js +541 -0
- data/test/vendor/jQuery/1.3.2/src/core.js +1255 -0
- data/test/vendor/jQuery/1.3.2/src/data.js +145 -0
- data/test/vendor/jQuery/1.3.2/src/dimensions.js +49 -0
- data/test/vendor/jQuery/1.3.2/src/event.js +684 -0
- data/test/vendor/jQuery/1.3.2/src/fx.js +407 -0
- data/test/vendor/jQuery/1.3.2/src/intro.js +13 -0
- data/test/vendor/jQuery/1.3.2/src/offset.js +155 -0
- data/test/vendor/jQuery/1.3.2/src/outro.js +1 -0
- data/test/vendor/jQuery/1.3.2/src/selector.js +1015 -0
- data/test/vendor/jQuery/1.3.2/src/support.js +112 -0
- data/test/vendor/jQuery/1.3.2/test/data/cow.jpg +0 -0
- data/test/vendor/jQuery/1.3.2/test/data/dashboard.xml +11 -0
- data/test/vendor/jQuery/1.3.2/test/data/echoQuery.php +1 -0
- data/test/vendor/jQuery/1.3.2/test/data/iframe.html +8 -0
- data/test/vendor/jQuery/1.3.2/test/data/json.php +9 -0
- data/test/vendor/jQuery/1.3.2/test/data/json_assigned_obj.js +1 -0
- data/test/vendor/jQuery/1.3.2/test/data/json_obj.js +1 -0
- data/test/vendor/jQuery/1.3.2/test/data/jsonp.php +10 -0
- data/test/vendor/jQuery/1.3.2/test/data/name.html +1 -0
- data/test/vendor/jQuery/1.3.2/test/data/name.php +29 -0
- data/test/vendor/jQuery/1.3.2/test/data/offset/absolute.html +39 -0
- data/test/vendor/jQuery/1.3.2/test/data/offset/body.html +24 -0
- data/test/vendor/jQuery/1.3.2/test/data/offset/fixed.html +33 -0
- data/test/vendor/jQuery/1.3.2/test/data/offset/relative.html +31 -0
- data/test/vendor/jQuery/1.3.2/test/data/offset/scroll.html +39 -0
- data/test/vendor/jQuery/1.3.2/test/data/offset/static.html +31 -0
- data/test/vendor/jQuery/1.3.2/test/data/offset/table.html +43 -0
- data/test/vendor/jQuery/1.3.2/test/data/params_html.php +12 -0
- data/test/vendor/jQuery/1.3.2/test/data/test.html +7 -0
- data/test/vendor/jQuery/1.3.2/test/data/test.js +3 -0
- data/test/vendor/jQuery/1.3.2/test/data/test.php +7 -0
- data/test/vendor/jQuery/1.3.2/test/data/test2.html +5 -0
- data/test/vendor/jQuery/1.3.2/test/data/test3.html +3 -0
- data/test/vendor/jQuery/1.3.2/test/data/testrunner.js +1 -0
- data/test/vendor/jQuery/1.3.2/test/data/text.php +12 -0
- data/test/vendor/jQuery/1.3.2/test/data/with_fries.xml +25 -0
- data/test/vendor/jQuery/1.3.2/test/index.html +229 -0
- data/test/vendor/jQuery/1.3.2/test/jqenv-1259090275493.html +247 -0
- data/test/vendor/jQuery/1.3.2/test/jqenv-1259091671501.html +247 -0
- data/test/vendor/jQuery/1.3.2/test/jqenv-1259175319655.html +247 -0
- data/test/vendor/jQuery/1.3.2/test/offset.html +28 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/jquery/1.2.1/jquery.js +11 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/jquery/1.2.3/jquery.js +11 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/mootools/1.11/mootools.js +1577 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/prototype/1.6.0.2/prototype.js +4221 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.7.0/builder.js +131 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.7.0/controls.js +835 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.7.0/dragdrop.js +944 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.7.0/effects.js +1090 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.7.0/scriptaculous.js +51 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.7.0/slider.js +278 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.7.0/unittest.js +564 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/builder.js +136 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/controls.js +965 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/dragdrop.js +974 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/effects.js +1122 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/scriptaculous.js +58 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/slider.js +275 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/sound.js +55 -0
- data/test/vendor/jQuery/1.3.2/test/otherlibs/scriptaculous/1.8.1/unittest.js +568 -0
- data/test/vendor/jQuery/1.3.2/test/polluted.php +64 -0
- data/test/vendor/jQuery/1.3.2/test/qunit/testrunner.js +780 -0
- data/test/vendor/jQuery/1.3.2/test/qunit/testsuite.css +120 -0
- data/test/vendor/jQuery/1.3.2/test/test.js +41 -0
- data/test/vendor/jQuery/1.3.2/test/unit/ajax.js +856 -0
- data/test/vendor/jQuery/1.3.2/test/unit/core.js +1872 -0
- data/test/vendor/jQuery/1.3.2/test/unit/data.js +160 -0
- data/test/vendor/jQuery/1.3.2/test/unit/dimensions.js +86 -0
- data/test/vendor/jQuery/1.3.2/test/unit/event.js +670 -0
- data/test/vendor/jQuery/1.3.2/test/unit/fx.js +451 -0
- data/test/vendor/jQuery/1.3.2/test/unit/offset.js +173 -0
- data/test/vendor/jQuery/1.3.2/test/unit/selector.js +395 -0
- data/test/vendor/jQuery/1.3.2/test/xhtml.php +5 -0
- data/test/vendor/jQuery/1.3.2/version.txt +1 -0
- metadata +158 -22
- data/lib/envjs/runtime.rb.smp +0 -133
- data/test/envjs-call-load-test.js +0 -5
- data/test/envjs-prototype.js +0 -5
- data/test/qunit/package.json +0 -21
- data/test/qunit/test/index.html +0 -17
- data/test/qunit/test/same.js +0 -1368
- data/test/qunit/test/test.js +0 -136
- data/test/qunit.smp/package.json +0 -21
- data/test/qunit.smp/test/index.html +0 -17
- data/test/qunit.smp/test/same.js +0 -1368
- data/test/qunit.smp/test/test.js +0 -136
- data/test/rhino-call-load-test.js +0 -5
- data/test/rhino-prototype.js +0 -5
- data/test/test-with-envs-jar.js +0 -8
- data/test/test-with-rhino-jar.js +0 -9
@@ -0,0 +1,197 @@
|
|
1
|
+
function test(name, fn){
|
2
|
+
expected = -1;
|
3
|
+
numTests = 0;
|
4
|
+
reset();
|
5
|
+
|
6
|
+
fn();
|
7
|
+
|
8
|
+
if ( expected != -1 && expected != numTests )
|
9
|
+
log( false, "Wrong number of tests run. " + numTests + " ran, expected " + expected );
|
10
|
+
}
|
11
|
+
|
12
|
+
var orig = document.getElementById('main').innerHTML;
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Resets the test setup. Useful for tests that modify the DOM.
|
16
|
+
*/
|
17
|
+
function reset() {
|
18
|
+
document.getElementById('main').innerHTML = orig;
|
19
|
+
}
|
20
|
+
|
21
|
+
var currentModule = "";
|
22
|
+
|
23
|
+
// call on start of module test to prepend name to all tests
|
24
|
+
function module(moduleName) {
|
25
|
+
currentModule = moduleName;
|
26
|
+
}
|
27
|
+
|
28
|
+
var expected = -1;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
|
32
|
+
*/
|
33
|
+
function expect(asserts) {
|
34
|
+
expected = asserts;
|
35
|
+
}
|
36
|
+
|
37
|
+
/**
|
38
|
+
* Asserts true.
|
39
|
+
* @example ok( $("a").size() > 5, "There must be at least 5 anchors" );
|
40
|
+
*/
|
41
|
+
function ok(a, msg) {
|
42
|
+
log( !!a, msg );
|
43
|
+
}
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Asserts that two arrays are the same
|
47
|
+
*/
|
48
|
+
function isSet(a, b, msg) {
|
49
|
+
var ret = true;
|
50
|
+
if ( a && b && a.length != undefined && a.length == b.length ) {
|
51
|
+
for ( var i = 0; i < a.length; i++ ) {
|
52
|
+
if ( a[i] != b[i] )
|
53
|
+
ret = false;
|
54
|
+
}
|
55
|
+
} else
|
56
|
+
ret = false;
|
57
|
+
if ( !ret )
|
58
|
+
log( ret, msg + " expected: " + serialArray(b) + " result: " + serialArray(a) );
|
59
|
+
else
|
60
|
+
log( ret, msg );
|
61
|
+
}
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Asserts that two objects are equivalent
|
65
|
+
*/
|
66
|
+
function isObj(a, b, msg) {
|
67
|
+
var ret = true;
|
68
|
+
|
69
|
+
if ( a && b ) {
|
70
|
+
for ( var i in a )
|
71
|
+
if ( a[i] != b[i] )
|
72
|
+
ret = false;
|
73
|
+
|
74
|
+
for ( i in b )
|
75
|
+
if ( a[i] != b[i] )
|
76
|
+
ret = false;
|
77
|
+
} else
|
78
|
+
ret = false;
|
79
|
+
|
80
|
+
log( ret, msg );
|
81
|
+
}
|
82
|
+
|
83
|
+
function serialArray( a ) {
|
84
|
+
var r = [];
|
85
|
+
|
86
|
+
if ( a && a.length )
|
87
|
+
for ( var i = 0; i < a.length; i++ ) {
|
88
|
+
var str = a[i] ? a[i].nodeName : "";
|
89
|
+
if ( str ) {
|
90
|
+
str = str.toLowerCase();
|
91
|
+
if ( a[i].id )
|
92
|
+
str += "#" + a[i].id;
|
93
|
+
} else
|
94
|
+
str = a[i];
|
95
|
+
r.push( str );
|
96
|
+
}
|
97
|
+
|
98
|
+
return "[ " + r.join(", ") + " ]"
|
99
|
+
}
|
100
|
+
|
101
|
+
/**
|
102
|
+
* Returns an array of elements with the given IDs, eg.
|
103
|
+
* @example q("main", "foo", "bar")
|
104
|
+
* @result [<div id="main">, <span id="foo">, <input id="bar">]
|
105
|
+
*/
|
106
|
+
function q() {
|
107
|
+
var r = [];
|
108
|
+
for ( var i = 0; i < arguments.length; i++ )
|
109
|
+
r.push( document.getElementById( arguments[i] ) );
|
110
|
+
return r;
|
111
|
+
}
|
112
|
+
|
113
|
+
/**
|
114
|
+
* Asserts that a select matches the given IDs
|
115
|
+
* @example t("Check for something", "//[a]", ["foo", "baar"]);
|
116
|
+
* @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar'
|
117
|
+
*/
|
118
|
+
function t(a,b,c) {
|
119
|
+
var f = jQuery(b);
|
120
|
+
var s = "";
|
121
|
+
for ( var i = 0; i < f.length; i++ )
|
122
|
+
s += (s && ",") + '"' + f[i].id + '"';
|
123
|
+
isSet(f, q.apply(q,c), a + " (" + b + ")");
|
124
|
+
}
|
125
|
+
|
126
|
+
/**
|
127
|
+
* Checks that the first two arguments are equal, with an optional message.
|
128
|
+
* Prints out both expected and actual values on failure.
|
129
|
+
*
|
130
|
+
* Prefered to ok( expected == actual, message )
|
131
|
+
*
|
132
|
+
* @example equals( "Expected 2 characters.", v.formatMessage("Expected {0} characters.", 2) );
|
133
|
+
*
|
134
|
+
* @param Object expected
|
135
|
+
* @param Object actual
|
136
|
+
* @param String message (optional)
|
137
|
+
*/
|
138
|
+
function equals(expected, actual, message) {
|
139
|
+
var result = expected == actual;
|
140
|
+
message = message || (result ? "okay" : "failed");
|
141
|
+
log( result, result ? message + ": " + expected : message + " expected: " + expected + " actual: " + actual );
|
142
|
+
}
|
143
|
+
|
144
|
+
var numTests = 0, total = 0, pass = 0, fail = 0;
|
145
|
+
|
146
|
+
function log(state, msg){
|
147
|
+
print( (state ? "PASS" : "FAIL") + " (" + (++total) + ") " +
|
148
|
+
(currentModule ? "[" + currentModule + "] " : "") + msg );
|
149
|
+
|
150
|
+
numTests++;
|
151
|
+
|
152
|
+
if ( state )
|
153
|
+
pass++;
|
154
|
+
else
|
155
|
+
fail++;
|
156
|
+
}
|
157
|
+
|
158
|
+
function results(){
|
159
|
+
print( pass + " Passed, " + fail + " Failed" );
|
160
|
+
}
|
161
|
+
|
162
|
+
function start(){}
|
163
|
+
function stop(){}
|
164
|
+
|
165
|
+
/**
|
166
|
+
* Trigger an event on an element.
|
167
|
+
*
|
168
|
+
* @example triggerEvent( document.body, "click" );
|
169
|
+
*
|
170
|
+
* @param DOMElement elem
|
171
|
+
* @param String type
|
172
|
+
*/
|
173
|
+
function triggerEvent( elem, type, event ) {
|
174
|
+
/*
|
175
|
+
if ( jQuery.browser.mozilla || jQuery.browser.opera ) {
|
176
|
+
event = document.createEvent("MouseEvents");
|
177
|
+
event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
|
178
|
+
0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
179
|
+
elem.dispatchEvent( event );
|
180
|
+
} else if ( jQuery.browser.msie ) {
|
181
|
+
elem.fireEvent("on"+type);
|
182
|
+
}
|
183
|
+
*/
|
184
|
+
}
|
185
|
+
|
186
|
+
/**
|
187
|
+
* Add random number to url to stop IE from caching
|
188
|
+
*
|
189
|
+
* @example url("data/test.html")
|
190
|
+
* @result "data/test.html?10538358428943"
|
191
|
+
*
|
192
|
+
* @example url("data/test.php?foo=bar")
|
193
|
+
* @result "data/test.php?foo=bar&10538358345554"
|
194
|
+
*/
|
195
|
+
function url(value) {
|
196
|
+
return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
|
197
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
|
2
|
+
.dialog {
|
3
|
+
margin-bottom: 1em;
|
4
|
+
}
|
5
|
+
a.expand {
|
6
|
+
background: #e3e3e3;
|
7
|
+
}
|
8
|
+
|
9
|
+
div#time-test {
|
10
|
+
font-family: Arial, Helvetica, sans-serif;
|
11
|
+
font-size: 62.5%;
|
12
|
+
}
|
13
|
+
|
14
|
+
td.test button {
|
15
|
+
float: right;
|
16
|
+
}
|
17
|
+
|
18
|
+
table {
|
19
|
+
border: 1px solid #000;
|
20
|
+
}
|
21
|
+
|
22
|
+
table td, table th {
|
23
|
+
border: 1px solid #000;
|
24
|
+
padding: 10px;
|
25
|
+
}
|
26
|
+
|
27
|
+
td.winner {
|
28
|
+
background-color: #cfc;
|
29
|
+
}
|
30
|
+
|
31
|
+
td.tie {
|
32
|
+
background-color: #ffc;
|
33
|
+
}
|
34
|
+
|
35
|
+
td.fail {
|
36
|
+
background-color: #f99;
|
37
|
+
font-weight: bold;
|
38
|
+
text-align: center;
|
39
|
+
}
|
40
|
+
|
41
|
+
tfoot td {
|
42
|
+
text-align: center;
|
43
|
+
}
|
44
|
+
|
45
|
+
#time-test {
|
46
|
+
margin: 1em 0;
|
47
|
+
padding: .5em;
|
48
|
+
background: #e3e3e3;
|
49
|
+
}
|
50
|
+
#time-taken {
|
51
|
+
font-weight: bold;
|
52
|
+
}
|
53
|
+
|
54
|
+
span.wins {
|
55
|
+
color: #330;
|
56
|
+
}
|
57
|
+
|
58
|
+
span.fails {
|
59
|
+
color: #900;
|
60
|
+
}
|
61
|
+
|
62
|
+
div.buttons {
|
63
|
+
margin-top: 10px;
|
64
|
+
margin-bottom: 10px;
|
65
|
+
}
|
@@ -0,0 +1,181 @@
|
|
1
|
+
jQuery.benchmarker.tests = [
|
2
|
+
// Selectors from:
|
3
|
+
// http://ejohn.org/blog/selectors-that-people-actually-use/
|
4
|
+
/*
|
5
|
+
// For Amazon.com
|
6
|
+
"#navAmazonLogo", "#navSwmSkedPop",
|
7
|
+
".navbar", ".navGreeting",
|
8
|
+
"div", "table",
|
9
|
+
"img.navCrossshopTabCap", "span.navGreeting",
|
10
|
+
"#navbar table", "#navidWelcomeMsg span",
|
11
|
+
"div#navbar", "ul#navAmazonLogo",
|
12
|
+
"#navAmazonLogo .navAmazonLogoGatewayPanel", "#navidWelcomeMsg .navGreeting",
|
13
|
+
".navbar .navAmazonLogoGatewayPanel", ".navbar .navGreeting",
|
14
|
+
"*",
|
15
|
+
"#navAmazonLogo li.navAmazonLogoGatewayPanel", "#navidWelcomeMsg span.navGreeting",
|
16
|
+
"a[name=top]", "form[name=site-search]",
|
17
|
+
".navbar li", ".navbar span",
|
18
|
+
"[name=top]", "[name=site-search]",
|
19
|
+
"ul li", "a img",
|
20
|
+
"#navbar #navidWelcomeMsg", "#navbar #navSwmDWPop",
|
21
|
+
"#navbar ul li", "#navbar a img"
|
22
|
+
*/
|
23
|
+
// For Yahoo.com
|
24
|
+
"#page", "#masthead", "#mastheadhd",
|
25
|
+
".mastheadbd", ".first", ".on",
|
26
|
+
"div", "li", "a",
|
27
|
+
"div.mastheadbd", "li.first", "li.on",
|
28
|
+
"#page div", "#dtba span",
|
29
|
+
"div#page", "div#masthead",
|
30
|
+
"#page .mastheadbd", "#page .first",
|
31
|
+
".outer_search_container .search_container", ".searchbox_container .inputtext",
|
32
|
+
"*",
|
33
|
+
"#page div.mastheadbd", "#page li.first",
|
34
|
+
"input[name=p]", "a[name=marketplace]",
|
35
|
+
".outer_search_container div", ".searchbox_container span",
|
36
|
+
"[name=p]", "[name=marketplace]",
|
37
|
+
"ul li", "form input",
|
38
|
+
"#page #e2econtent", "#page #e2e"
|
39
|
+
];
|
40
|
+
|
41
|
+
jQuery.fn.benchmark = function() {
|
42
|
+
this.each(function() {
|
43
|
+
try {
|
44
|
+
jQuery(this).parent().children("*:gt(1)").remove();
|
45
|
+
} catch(e) { }
|
46
|
+
})
|
47
|
+
// set # times to run the test in index.html
|
48
|
+
var times = parseInt(jQuery("#times").val());
|
49
|
+
jQuery.benchmarker.startingList = this.get();
|
50
|
+
benchmark(this.get(), times, jQuery.benchmarker.libraries);
|
51
|
+
}
|
52
|
+
|
53
|
+
jQuery(function() {
|
54
|
+
for(i = 0; i < jQuery.benchmarker.tests.length; i++) {
|
55
|
+
jQuery("tbody").append("<tr><td class='test'>" + jQuery.benchmarker.tests[i] + "</td></tr>");
|
56
|
+
}
|
57
|
+
jQuery("tbody tr:first-child").remove();
|
58
|
+
jQuery("td.test").before("<td><input type='checkbox' checked='checked' /></td>");
|
59
|
+
jQuery("button.runTests").bind("click", function() {
|
60
|
+
jQuery('td:has(input:checked) + td.test').benchmark();
|
61
|
+
});
|
62
|
+
|
63
|
+
jQuery("button.retryTies").bind("click", function() { jQuery("tr:has(td.tie) td.test").benchmark() })
|
64
|
+
|
65
|
+
jQuery("button.selectAll").bind("click", function() { jQuery("input[type=checkbox]").each(function() { this.checked = true }) })
|
66
|
+
jQuery("button.deselectAll").bind("click", function() { jQuery("input[type=checkbox]").each(function() { this.checked = false }) })
|
67
|
+
|
68
|
+
jQuery("#addTest").bind("click", function() {
|
69
|
+
jQuery("table").append("<tr><td><input type='checkbox' /></td><td><input type='text' /><button>Add</button></td></tr>");
|
70
|
+
jQuery("div#time-test > button").each(function() { this.disabled = true; })
|
71
|
+
jQuery("tbody tr:last button").bind("click", function() {
|
72
|
+
var td = jQuery(this).parent();
|
73
|
+
td.html("<button>-</button>" + jQuery(this).prev().val()).addClass("test");
|
74
|
+
jQuery("div#time-test > button").each(function() { this.disabled = false; })
|
75
|
+
jQuery("button", td).bind("click", function() { jQuery(this).parents("tr").remove(); })
|
76
|
+
})
|
77
|
+
})
|
78
|
+
|
79
|
+
var headers = jQuery.map(jQuery.benchmarker.libraries, function(i,n) {
|
80
|
+
var extra = n == 0 ? "basis - " : "";
|
81
|
+
return "<th>" + extra + i + "</th>"
|
82
|
+
}).join("");
|
83
|
+
|
84
|
+
jQuery("thead tr").append(headers);
|
85
|
+
|
86
|
+
var footers = "";
|
87
|
+
for(i = 0; i < jQuery.benchmarker.libraries.length; i++)
|
88
|
+
footers += "<th></th>"
|
89
|
+
|
90
|
+
var wlfooters = "";
|
91
|
+
for(i = 0; i < jQuery.benchmarker.libraries.length; i++)
|
92
|
+
wlfooters += "<td><span class='wins'>W</span> / <span class='fails'>F</span></th>"
|
93
|
+
|
94
|
+
jQuery("tfoot tr:first").append(footers);
|
95
|
+
jQuery("tfoot tr:last").append(wlfooters);
|
96
|
+
|
97
|
+
});
|
98
|
+
|
99
|
+
benchmark = function(list, times, libraries) {
|
100
|
+
if(list[0]) {
|
101
|
+
var times = times || 50;
|
102
|
+
var el = list[0];
|
103
|
+
var code = jQuery(el).text().replace(/^-/, "");
|
104
|
+
var timeArr = []
|
105
|
+
for(i = 0; i < times + 2; i++) {
|
106
|
+
var time = new Date()
|
107
|
+
try {
|
108
|
+
window[libraries[0]](code);
|
109
|
+
} catch(e) { }
|
110
|
+
timeArr.push(new Date() - time);
|
111
|
+
}
|
112
|
+
var diff = Math.sum(timeArr) - Math.max.apply( Math, timeArr )
|
113
|
+
- Math.min.apply( Math, timeArr );
|
114
|
+
try {
|
115
|
+
var libRes = window[libraries[0]](code);
|
116
|
+
var jqRes = jQuery(code);
|
117
|
+
if(((jqRes.length == 0) && (libRes.length != 0)) ||
|
118
|
+
(libRes.length > 0 && (jqRes.length == libRes.length)) ||
|
119
|
+
((libraries[0] == "cssQuery" || libraries[0] == "jQuery") && code.match(/nth\-child/) && (libRes.length > 0)) ||
|
120
|
+
((libraries[0] == "jQold") && jqRes.length > 0)) {
|
121
|
+
jQuery(el).parent().append("<td>" + Math.round(diff / times * 100) / 100 + "ms</td>");
|
122
|
+
} else {
|
123
|
+
jQuery(el).parent().append("<td class='fail'>FAIL</td>");
|
124
|
+
}
|
125
|
+
} catch(e) {
|
126
|
+
jQuery(el).parent().append("<td class='fail'>FAIL</td>");
|
127
|
+
}
|
128
|
+
setTimeout(benchmarkList(list, times, libraries), 100);
|
129
|
+
} else if(libraries[1]) {
|
130
|
+
benchmark(jQuery.benchmarker.startingList, times, libraries.slice(1));
|
131
|
+
} else {
|
132
|
+
jQuery("tbody tr").each(function() {
|
133
|
+
var winners = jQuery("td:gt(1)", this).min(2);
|
134
|
+
if(winners.length == 1) winners.addClass("winner");
|
135
|
+
else winners.addClass("tie");
|
136
|
+
});
|
137
|
+
setTimeout(count, 100);
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
141
|
+
function benchmarkList(list, times, libraries) {
|
142
|
+
return function() {
|
143
|
+
benchmark(list.slice(1), times, libraries);
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
function count() {
|
148
|
+
for(i = 3; i <= jQuery.benchmarker.libraries.length + 2 ; i++) {
|
149
|
+
var fails = jQuery("td:nth-child(" + i + ").fail").length;
|
150
|
+
var wins = jQuery("td:nth-child(" + i + ").winner").length;
|
151
|
+
jQuery("tfoot tr:first th:eq(" + (i - 1) + ")")
|
152
|
+
.html("<span class='wins'>" + wins + "</span> / <span class='fails'>" + fails + "</span>");
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
|
157
|
+
jQuery.fn.maxmin = function(tolerance, maxmin, percentage) {
|
158
|
+
tolerance = tolerance || 0;
|
159
|
+
var target = Math[maxmin].apply(Math, jQuery.map(this, function(i) {
|
160
|
+
var parsedNum = parseFloat(i.innerHTML.replace(/[^\.\d]/g, ""));
|
161
|
+
if(parsedNum || (parsedNum == 0)) return parsedNum;
|
162
|
+
}));
|
163
|
+
return this.filter(function() {
|
164
|
+
if( withinTolerance(parseFloat(this.innerHTML.replace(/[^\.\d]/g, "")), target, tolerance, percentage) ) return true;
|
165
|
+
})
|
166
|
+
}
|
167
|
+
|
168
|
+
jQuery.fn.max = function(tolerance, percentage) { return this.maxmin(tolerance, "max", percentage) }
|
169
|
+
jQuery.fn.min = function(tolerance, percentage) { return this.maxmin(tolerance, "min", percentage) }
|
170
|
+
|
171
|
+
function withinTolerance(number, target, tolerance, percentage) {
|
172
|
+
if(percentage) { var high = target + ((tolerance / 100) * target); var low = target - ((tolerance / 100) * target); }
|
173
|
+
else { var high = target + tolerance; var low = target - tolerance; }
|
174
|
+
if(number >= low && number <= high) return true;
|
175
|
+
}
|
176
|
+
|
177
|
+
Math.sum = function(arr) {
|
178
|
+
var sum = 0;
|
179
|
+
for(i = 0; i < arr.length; i++) sum += arr[i];
|
180
|
+
return sum;
|
181
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
|
+
<title>Speed Test</title>
|
8
|
+
<script src="jquery-basis.js" type="text/javascript"></script>
|
9
|
+
<script src="../dist/jquery.js" type="text/javascript"></script>
|
10
|
+
<script type="text/javascript">jQuery.noConflict();</script>
|
11
|
+
<link rel="stylesheet" href="benchmarker.css" type="text/css" media="screen" />
|
12
|
+
</head>
|
13
|
+
|
14
|
+
<body>
|
15
|
+
|
16
|
+
<h1>Speed Test</h1>
|
17
|
+
<div id="badid"></div>
|
18
|
+
<div id="time-test">
|
19
|
+
<p>Using the following selector expressions (<input type="text" id="times" maxlength="5" size="5" value="20"/> times each):</p>
|
20
|
+
<p>NOTE: Number shown is an average.</p>
|
21
|
+
<div class="buttons">
|
22
|
+
<button class="selectAll">Select All</button>
|
23
|
+
<button class="deselectAll">Deselect All</button>
|
24
|
+
|
25
|
+
<button class="runTests">Run Tests</button>
|
26
|
+
<button class="retryTies">Retry Ties</button>
|
27
|
+
</div>
|
28
|
+
<table cellspacing="0">
|
29
|
+
<thead>
|
30
|
+
<tr>
|
31
|
+
<th>Run?</th>
|
32
|
+
<th>Test</th>
|
33
|
+
|
34
|
+
</tr>
|
35
|
+
</thead>
|
36
|
+
<tfoot>
|
37
|
+
<tr>
|
38
|
+
<th></th>
|
39
|
+
<th></th>
|
40
|
+
</tr>
|
41
|
+
<tr>
|
42
|
+
<th></th>
|
43
|
+
|
44
|
+
<th></th>
|
45
|
+
</tr>
|
46
|
+
</tfoot>
|
47
|
+
<tbody>
|
48
|
+
<tr>
|
49
|
+
<td></td>
|
50
|
+
<td></td>
|
51
|
+
</tr>
|
52
|
+
</tbody>
|
53
|
+
|
54
|
+
</table>
|
55
|
+
|
56
|
+
<div class="buttons">
|
57
|
+
<button class="selectAll">Select All</button>
|
58
|
+
<button class="deselectAll">Deselect All</button>
|
59
|
+
<button class="runTests">Run Tests</button>
|
60
|
+
<button class="retryTies">Retry Ties</button>
|
61
|
+
<button id="addTest">+</button>
|
62
|
+
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
<div style="display:none;"><div id="page"><div id="masthead"><div id="mastheadhd"></div><div id="mastheadbd"><div class="mastheadbd"><div id="eyebrow"><ul id="ypromo"><li><a id="sethomepage" href=""><strong>Make Y! your home page</strong></a></li><li id="toolbar"><a id="dtba" href=""><span id="tba">Get</span> Yahoo! Toolbar</a></li></ul><div id="ffhpcx"></div><div id="headline"><span><a href="">How much home can you afford?</a></span></div></div><h1><img src="blank.gif" border=0 width=232 height=44 alt="Yahoo!" id="ylogo"></h1><div id="searchwrapper"><form name="sf1" id="search" action="r/sx/*-http://search.yahoo.com/search"><fieldset><legend>Yahoo! Search</legend><ul id="vsearchtabs"><li class="first on"><a href="">Web</a></li><li><a href="">Images</a></li><li><a href="">Video</a></li><li><a href="">Local</a></li><li><a href="">Shopping</a></li><li class="last ignore"><dl id="vsearchm"><dt><a id="vsearchmore" href="">More</a></dt><dd id="vslist"></dd></dl></li></ul><div id="sbox"><label id="searchlabel" for="p">Search:</label><div class="outer_search_container"><div id="search_container" class="search_container"><img src="blank.gif" id="searchother_e2e" alt=""><div id="searchIE"><div id="searchmw1" class="iemw"></div></div><div class="fixfloat searchbox_container"><div id="searchbox"><input class="plong inputtext" type="text" id="p" name="p" accesskey="s"></div><span id="searchbtn"><input type="submit" id="searchsubmit" class="btn-more-2" value="Web Search"></span></div></div><div id="e2eClass" class="e2e"><div class="e2eTween"></div><div id="e2e"><div id="e2econtent"><div id="e2e_intl"></div><div class="ac_container"><div id="e2einfo"></div><div id="ac_container"></div><div id="e2escroll"></div></div></div><a title="toggle search suggestions" id="e2etoggle" href="" onclick="return false;"><img src="blank.gif" id="searchtoggle_e2e" alt="toggle search suggestions"></a></div></div></div><input type="hidden" name="fr" value="yfp"><input type="hidden" name="toggle" value="1"><input type="hidden" name="cop" value="mss"><input type="hidden" name="ei" value="UTF-8"></div><div id="sboxfooter"></div></fieldset></form></div><div class="mh_footer"><div id="doors"><h3 class="a11y">Popular Yahoo! Properties</h3><ul id="doors-links" class="fixfloat"><li class="first"><strong>Yahoo! Home</strong></li><li class="middle"><a href=r/i1 title="Go to My Yahoo!">My Yahoo!</a></li><li class="last"></li></ul></div><div id="pagesettingscx"><span id="navbardate"><cite class="timestamp"> </cite></span><a href="" id="editpage">Page Options</a><div id="pagesettings"><div class="bd"><span><div class="iemw"></div><div id="pscolors"><h4>Color:</h4><ol id="themes"><li><a href="" id="t1" class="on" title="Ocean">Ocean</a></li><li><a href="" id="t4" title="Tangerine">Tangerine</a></li><li><a href="" id="t3" title="Violet">Violet</a></li><li><a href="" id="t2" title="Oyster">Oyster</a></li><li><a href="" id="t5" title="Grass">Grass</a></li><li><a href="" id="t7" title="Pink">Pink</a></li></ol></div><a id="sizetogglelink" href="">Switch to narrow layout</a><a id="myyahoolink" href="">Want more ways to customize <span>your home page?</span><span class="trymyyahoo">Try My Yahoo! »</span></a></span></div></div></div></div></div></div><div id="mastheadft"></div></div><div id="colcx"><div id="left"><div id="trough" class="md"><div class="bd"><div id="trough-cols" class="fixfloat"><ul id="trough-1" class="col1"><li><a style="background-position:-400px -120px" href="">Answers</a></li><li><a style="background-position:-400px -440px" href="">Autos</a></li><li><a style="background-position:0 -761px" href="">Finance</a></li><li><a style="background-position:0 -1600px" href="">Games</a></li><li><a style="background-position:0 -1400px" href="">Groups</a></li><li><a style="background-position:0 -439px" href="">HotJobs</a></li><li><a style="background-position:0 -600px" href="">Maps</a></li><li><a style="background-position:0 -161px" href="">Mobile Web</a></li><li><a style="background-position:0 -561px;display:inline" href="">Movies</a> | <a class="trough_tv" href="">TV</a></li><li><a style="background-position:0 -1562px" href="">Music</a></li><li><a style="background-position:-400px -1119px" href="">OMG</a></li><li class="highlight"><a style="background-position:0 -40px" href="">Personals</a></li><li><a style="background-position:-400px -161px" href="">Real Estate<small class="updated"></small></a></li><li><a style="background-position:-400px -1321px" href="">Shine</a></li><li><a style="background-position:0 -1640px" href="">Shopping</a></li><li><a style="background-position:0 -800px" href="">Sports</a></li><li><a style="background-position:0 -79px" href="">Travel</a></li><li><a style="background-position:0 -121px" href="">Yellow Pages</a></li></ul></div><span id="allyservicescx"><a href="" id="allyservices" class="btn-more-2" title="View the complete list of Yahoo! Services">More Yahoo! Services</a></span></div></div><div class="md minimantle"><div id="smallbiz" class="md-sub"><div class="hd"><h2><a href="">Small Business</a></h2></div><ul id="smallbiz-links"><li><a href="">Get a Web Site</a></li><li><a href="">Domain Names</a></li><li><a href="">Sell Online</a></li><li><a href="">Search Ads</a></li></ul></div></div><div class="md minimantle"><div id="advertising" class="md-sub"><div class="hd"><h2><a href="">Featured Services</a></h2></div><ul id="advertising-links"><li><a href="">Downloads</a></li><li><a href="">Health</a></li><li><a href="">Kids</a></li><li><a href="">GeoCities</a></li><li><a href="">Mail Plus</a></li><li><a href="">Y! International</a></li></ul></div></div></div><div id="rightcx"><div id="middle"><div class="colpadding"><div id="today" class="md featured1"><div class="hd tabs"><h3 class="a11y">Featured Navigation</h3><ul id="todaytabs"><li class="on first"><em><a hidefocus="true" id="featured1" href="">Featured</a></em><span class="pipe"></span></li><li class="tab2"><em><a hidefocus="true" id="entertainment1" href="">Entertainment</a></em><span class="pipe"></span></li><li class="tab3"><em><a hidefocus="true" id="sports1" href="">Sports</a></em><span class="pipe"></span></li><li class="last"><em><a hidefocus="true" id="money1" href="">Video</a></em><span class="pipe"></span></li></ul></div><div id="todayvideo"></div><div id="todaybd" class="bd"><cite class="timestamp"> </cite><span id="featured1ct" class="current"><div id="featured1main"><a href=s/1014544><img src="blank.gif" width="154" height="115" alt="Renee Zellweger (Steve Grantiz/WireImage)"></a><span><h3><a href=s/1014544>Worst dressed at the Globes</a></h3><p>Renee's look is a mess, and Miley's gown is a mistake. <a class=more href=s/1014544>» See bad outfits</a></p><ul><li><a class=slideshow href=s/1014545>Best dressed</a></li><li><a class=slideshow href=s/1014546>Stunning couples</a></li><li><a class=video href=s/1014547>Watch Brangelina diss Ryan Seacrest</a></li><li><a class=bullet href=s/1014548>Outrageous moments</a></li><li><a class=bullet href=s/1014549>Big winners</a></li></ul></span></div></span><span id="featured2ct"></span><span id="featured3ct"></span><span id="featured4ct"></span><span id="entertainment1ct"></span><span id="entertainment2ct"></span><span id="entertainment3ct"></span><span id="entertainment4ct"></span><span id="sports1ct"></span><span id="sports2ct"></span><span id="sports3ct"></span><span id="sports4ct"></span><span id="money1ct"></span><span id="money2ct"></span><span id="money3ct"></span><span id="money4ct"></span></div><div id="todayft" class="ft"><span id="footer1" class="current"><ul id="todaystories1"><li id="featured1|106537" class="on"><a href=s/1014556><img src="blank.gif" alt="" width="29" height="21">See the worst-dressed stars at Golden Globes</a></li><li id="featured2|106533"><a href=s/1014475><img src="blank.gif" alt="" width="29" height="21">Obama: Dog search down to two breeds</a></li><li id="featured3|106522"><a href=s/1014275><img src="blank.gif" alt="" width="29" height="21">Eagles star gets penalty for 'phone call'</a></li><li id="featured4|106538"><a href=s/1014566><img src="blank.gif" alt="" width="29" height="21">Teen sends 14,528 texts in one month</a></li></ul><div id="more-featured" class="btn-more"><b>»</b> More:<a class="first" href="">Featured</a><a class="last" href="">Buzz</a></div></span><span id="footer2"></span><span id="footer3"></span><span id="footer4"></span></div></div><div id="adwest" class="ad"></div><div id="news" class="md"><div class="hd tabs"><h3 class="a11y">News Navigation</h3><ul id="newstabs"><li class="on first"><em><a hidefocus="true" id="inthenews2" href="">News</a></em><span class="pipe"></span></li><li class="tab2"><em><a hidefocus="true" id="worldnews" href="">World</a></em><span class="pipe"></span></li><li class="tab3"><em><a hidefocus="true" id="localnews" href="">Local</a></em><span class="pipe"></span></li><li class="last"><em><a hidefocus="true" id="finsnews" href="">Finance</a></em><span class="pipe"></span></li></ul></div><div id="newsbd" class="bd"><span id="inthenews2ct" class="current"><h2 class="a11y">In the News</h2><div id="newstop"><cite class="timestamp"> </cite>• <a href=s/1014558>Obama advises Bush to request remaining $350B of bailout</a><br>• <a href=s/1014502>Bush defends his presidency in final news conference</a><br>• <a href=s/1014534>More than 900 Gazans dead as Israel continues attacks</a><br>• <a href=s/1014517>Openly gay Episcopal bishop to say prayer at inaugural event</a><br>• <a href=s/1014567>NYC judge allows Bernard Madoff to remain free on bail</a><br>• <a href=s/1014516>British PM backing Prince Harry after racist remark</a><br>• <a class=video style="background-position:-3px -48px;font:normal 100% arial;" href=s/1014537 onclick="window.open('s/1014537','playerWindow','width=793,height=608,scrollbars=no');return false;">Brothers separated at birth reunite after 80 years</a><br><ul id="more-news" class="btn-more"><li class="first"><b>»</b> More:</li><li><a href=r/xn>News</a></li><li><a href=r/me>Popular</a></li><li class="last"><a href=r/z0>Politics</a></li></ul></div><div id="newsft"><div id="newsbottom"><div id="finance-data"><div id="markets"><h3><a href="">Markets:</a></h3><ul><li><strong><a href="">Dow: </a><span class="down">-1.0%</span></strong></li><li><strong><a href="">Nasdaq: </a><span class="down">-1.7%</span></strong></li></ul></div><div id="quotes"><form name="fq" id="fq" action="r/f4/*-http://finance.yahoo.com/q"><fieldset><legend>Yahoo! Finance</legend> <a href="">Real-Time Quotes:</a><input accesskey="q" class="inputtext" type="text" id="s" name="s" size="5" title="Enter ticker symbol" /><input type="submit" class="submit" value="Go" /></fieldset></form></div></div><div id="news-sponsor"><a href=""><img src="blank.gif" border=0 width=165 height=15 title="Switch to Scottrade"></a></div></div></div></span><span id="worldnewsct"></span><span id="localnewsct"></span><span id="finsnewsct"></span></div></div><div id="marketplace" class="md"><div class="hd"><h2><a href="" name="marketplace">Marketplace</a></h2></div><div id="marketplacebd" class="bd"><table border=0 cellpadding=0 cellspacing=0 width="100%"><tr><td valign=top><a href=""><img src="blank.gif" width=70 height=50 border=0></a></td><td width=8> </td><td valign=top><font face=arial size=-1><a href="">Why online college is rocking:</a><br>1) Accredited Associates, Bachelor's, Master's, MBA degrees 2) Some jobs pay tuition <a href="">3) Top schools online.</a></font></td></tr></table><hr size=1 noshade><a href="">A bad credit score is 600 or below. Click here to see yours online in just 2 easy steps for $0. By Experian®</a><hr size=1 noshade><a href="">GEICO Car Insurance -</a> You could save over $500 on car insurance. <a href="">Get a fast, free quote.</a><hr size=1 noshade><a href="">100+ credit cards from 9 of the top 10 issuers. Instant approvals. Choose the right card for you. LendingTree®</a></div></div></div></div><div id="right"><div class="colpadding"><div id="pa" class="md"><div id="pabd"><div id="patop"><ul id="reg" class="so"><li class="mailstatus">Check your mail status: <a href="">Sign In</a></li><li id="signup">Free mail: <a href="">Sign Up</a></li></ul></div><div id="patabs"><ul id="tabs1" class="patabs first"><li id="mail" class="first"><div><h4><a id="pamail" accesskey="m" href=""><span class="icon">Mail</span></a></h4></div></li><li id="messenger"><div><h4><a id="pamsgr" href=""><span class="icon">Messenger</span></a></h4></div></li><li id="games" class="last"><div><h4><a id="pagames" href=""><span class="icon">Puzzles</span></a></h4></div></li></ul><div id="tabs1previewdiv" class="papreviewdiv"></div><ul id="tabs2" class="patabs last"><li id="weather" class="first"><div><h4><a id="paweather" href=""><span class="icon">Weather</span></a></h4></div></li><li id="events"><div><h4><a id="paevents" href=""><span class="icon">Events</span></a></h4></div></li><li id="horoscope" class="last"><div><h4><a id="pahoroscope" href=""><span class="icon">Horoscopes</span></a></h4></div></li></ul><div id="tabs2previewdiv" class="papreviewdiv"></div></div></div></div><div id="ad" class="ad"><table cellspacing=0 cellpadding=0 border=0 width=100%><tr><td align=center><a href="" target="_top"><img src="blank.gif" alt="" width=300 height=250 border=0></a></td></tr><tr><td align=center><br><font face="verdana" size="-2"><a href="" target="_blank">Ad Feedback</a></font></td></tr></table></div><div id="mantlecx"><div id="mantle"><div id="mantle2" class="md"><div class="hd"><h2><a href="">Inside Yahoo! HotJobs</a></h2> </div><div class="bd"><a href=""><img src="blank.gif" height="68" width="92" alt="Yahoo! HotJobs" border="0"></a><h3><a href="">Great companies hiring now</a></h3><ul><li><a href="">Careers with bright futures</a></li><li><a href="">Low-stress jobs that pay</a></li><li><a href="">Super-easy career changes</a></li><li><a href="">How to find a job right for you</a></li></ul></div></div></div></div><div id="pulse" class="md"><div class="hd"><h2>Pulse - What Yahoos Are Into</h2></div><div id="pulsebd" class="bd"><h3>Star Searches: Most Popular Actors</h3><a href=s/1013525/*-http://movies.yahoo.com/movie/contributor/1800043966><img src="blank.gif" alt="Alyssa Milano (Steve Granitz, WireImage.com)" width="139" height="119"></a><ol><li class="tt1"><a href=s/1013525/*-http://movies.yahoo.com/movie/contributor/1800043966>Alyssa Milano</a></li><li class="tt2"><a href=s/1013526/*-http://movies.yahoo.com/movie/contributor/1800018965>Brad Pitt</a></li><li class="tt3"><a href=s/1013527/*-http://movies.yahoo.com/movie/contributor/1804705919>Anne Hathaway</a></li><li class="tt4"><a href=s/1013528/*-http://movies.yahoo.com/movie/contributor/1800424122>Ziyi Zhang</a></li><li class="tt5"><a href=s/1013529/*-http://movies.yahoo.com/movie/contributor/1800019484>Charlize Theron</a></li><li class="tt6"><a href=s/1013530/*-http://movies.yahoo.com/movie/contributor/1800019485>Johnny Depp</a></li></ol></div><a class=btn-more href=s/1013531/*-http://movies.yahoo.com>» More Yahoo! Movies</a></div><div id="popsearch" class="md"><div class="hd"><h2>Today's Top Searches</h2></div><div id="popsearchbd" class="bd"><ol start=1><li><a href="">Odette Yustman</a></li><li><a href="">Kate Hudson</a></li><li><a href="">Ana Ortiz</a></li><li><a href="">Weight Loss Tips</a></li><li><a href="">Kimberley Locke</a></li></ol><ol start=6><li><a href="">Rod Blagojevich</a></li><li><a href="">2009 Jeep Commander</a></li><li><a href="">Attention Deficit...</a></li><li><a href="">Snoring</a></li><li><a href="">New Orleans Vacations</a></li></ol></div></div></div></div></div></div><div id="footer" class="md"><ul id="flist2"><li class="first"><a href="">Advertise with Us</a></li><li><a href="">Search Marketing</a></li><li><a href="">Privacy Policy</a></li><li><a href="">Terms of Service</a></li><li><a href=r/ad>Suggest a Site</a></li><li><a href="">Yahoo! en Español</a></li><li><a href="">Send Feedback</a></li><li class="last"><a href="">Help</a></li></ul><ul id="copyright"><li class="first">Copyright © 2009 Yahoo! Inc. All rights reserved.</li><li class="first"><a href="">Copyright/IP Policy</a></li><li><a href="">Company Info</a></li><li><a href="">Participate in Research</a></li><li><a href="">Jobs</a></li></ul></div></div> <div id="yblthm_sip" style="display:none"></div></div>
|
66
|
+
<script type="text/javascript" charset="utf-8">
|
67
|
+
jQuery.benchmarker = {libraries: ["$", "jQuery"]};
|
68
|
+
</script>
|
69
|
+
|
70
|
+
<script type="text/javascript" src="benchmarker.js"></script>
|
71
|
+
</body>
|
72
|
+
</html>
|