/[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 - (hide annotations) (download) (as text)
Fri Jun 6 12:22:52 2008 UTC (16 years, 11 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +39 -0 lines
File MIME type: text/html
*** empty log message ***

1 wakaba 1.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 wakaba 1.2 showSummary ();
66 wakaba 1.1 }
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 wakaba 1.2
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 wakaba 1.1 </script>
166    
167     </body>
168     </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24  
Google Analytics is used in this page; Cookies are used. 忍者AdMax is used in this page; Cookies are used. Privacy policy.