/[suikacvs]/www/test/charset/charset-names/test-all.html
Suika

Contents of /www/test/charset/charset-names/test-all.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations) (download) (as text)
Fri Jun 6 12:22:52 2008 UTC (17 years, 1 month ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +39 -0 lines
File MIME type: text/html
*** empty log message ***

1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title></title>
5 <script src="../../support/result.js"></script>
6 <style>
7 .result-match {
8 background-color: green;
9 color: white;
10 }
11 .result-notmatch {
12 background-color: white;
13 color: blue;
14 }
15 .result-na {
16 background-color: gray;
17 color: black;
18 }
19 .result-na .result-notmatch {
20 background-color: transparent;
21 color: #C0C0C0;
22 }
23 </style>
24 </head>
25 <body>
26
27 <noscript>FAIL (noscript)</noscript>
28
29 <table>
30 <thead>
31 <tr><th>HTTP <code>charset=""</code> parameter
32 <th><code>charset</code><th><code>characterSet</code>
33 <th><code>inputEncoding</code>
34 <tbody id=result-tbody></table>
35
36 <iframe style="width: 0; height: 0"></iframe>
37
38 <script>
39 var iframe = document.getElementsByTagName ('iframe')[0];
40 var resultTBody = document.getElementById ('result-tbody');
41
42 var xhr = new XMLHttpRequest ();
43 xhr.open ('GET', 'list.txt', false);
44 xhr.send (null);
45 var names = xhr.responseText.toLowerCase ().split (/\n/).sort ();
46
47 var lastData;
48 doNext ();
49
50 function doNext () {
51 if (names.length > 0) {
52 if (document.all && !window.opera) {
53 iframe.onreadystatechange = function () {
54 if (this.readyState == 'complete') {
55 addData ();
56 }
57 };
58 } else {
59 iframe.onload = addData;
60 }
61 var n = encodeURIComponent (names[0]).replace (/%2[Ff]/g, '/');
62 iframe.src = 'charset.cgi/' + n + '?' + (lastData ? 'c1' : 'c2');
63 } else {
64 iframe.onload = null;
65 showSummary ();
66 }
67 } // doNext
68
69 function addData () {
70 var doc = iframe.contentWindow.document;
71 if (!lastData) {
72 lastData = [doc.charset, doc.characterSet, doc.inputEncoding];
73 doNext ();
74 return;
75 }
76
77 var tr = document.createElement ('tr');
78 if (lastData[0] != doc.charset ||
79 lastData[1] != doc.characterSet ||
80 lastData[2] != doc.inputEncoding) {
81 tr.className = 'result-na';
82 }
83 lastData = null;
84
85 var name = names.shift ();
86 tr.appendChild (document.createElement ('th'))
87 .appendChild (document.createElement ('code'))
88 .appendChild (document.createTextNode (name));
89
90 var v = doc.charset;
91 if (v != null) {
92 var td = tr.appendChild (document.createElement ('td'));
93 td.appendChild (document.createElement ('code'))
94 .appendChild (document.createTextNode (v));
95 td.className = v.toLowerCase () == name ? 'result-match' : 'result-notmatch';
96 } else {
97 tr.appendChild (document.createElement ('td'))
98 .className = 'result-na';
99 }
100
101 v = doc.characterSet;
102 if (v != null) {
103 var td = tr.appendChild (document.createElement ('td'));
104 td.appendChild (document.createElement ('code'))
105 .appendChild (document.createTextNode (v));
106 td.className = v.toLowerCase () == name ? 'result-match' : 'result-notmatch';
107 } else {
108 tr.appendChild (document.createElement ('td'))
109 .className = 'result-na';
110 }
111
112 v = doc.inputEncoding;
113 if (v != null) {
114 var td = tr.appendChild (document.createElement ('td'));
115 td.appendChild (document.createElement ('code'))
116 .appendChild (document.createTextNode (v));
117 td.className = v.toLowerCase () == name ? 'result-match' : 'result-notmatch';
118 } else {
119 tr.appendChild (document.createElement ('td'))
120 .className = 'result-na';
121 }
122
123 resultTBody.appendChild (tr);
124
125 doNext ();
126 } // addData
127
128 function showSummary () {
129 var nameList = {};
130
131 var trs = document.getElementsByTagName ('table')[0].rows;
132 var trsL = trs.length;
133 for (var i = 0; i < trsL; i++) {
134 var tr = trs[i];
135 if (tr.className.match (/result-na/)) {
136 continue;
137 }
138
139 var th = tr.firstChild;
140 var td = th.nextSibling;
141 if (td.className.match (/result-na/)) {
142 td = td.nextSibling;
143 if (td.className.match (/result-na/)) {
144 continue;
145 }
146 }
147
148 var canonName = td.innerText || td.textContent;
149 var aliasName = th.innerText || th.textContent;
150 if (!nameList[canonName]) nameList[canonName] = {};
151 nameList[canonName][aliasName] = true;
152 }
153
154 var dl = document.createElement ('dl');
155 for (var v in nameList) {
156 dl.appendChild (document.createElement ('dt'))
157 .appendChild (document.createTextNode (v));
158 for (var w in nameList[v]) {
159 dl.appendChild (document.createElement ('dd'))
160 .appendChild (document.createTextNode (w));
161 }
162 }
163 document.body.appendChild (dl);
164 } // showSummary
165 </script>
166
167 </body>
168 </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24