1 |
wakaba |
1.1 |
<!-- Work in progress --> |
2 |
|
|
<html> |
3 |
|
|
<head> |
4 |
|
|
<title>HTML entities</title> |
5 |
|
|
<style> |
6 |
|
|
X.non-entity { |
7 |
|
|
display: none; |
8 |
|
|
} |
9 |
|
|
</style> |
10 |
|
|
</head> |
11 |
|
|
<body> |
12 |
|
|
<noscript><p id=result class=FAIL>FAIL (not executed)</p></noscript> |
13 |
|
|
<p><button type=button onclick="stopP=true">stop</button></p> |
14 |
|
|
<p><iframe></iframe></p> |
15 |
|
|
<script> |
16 |
|
|
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-'; |
17 |
|
|
var stopP = false; |
18 |
|
|
|
19 |
|
|
var doc = document.getElementsByTagName ('iframe')[0].contentWindow.document; |
20 |
|
|
|
21 |
|
|
var prefix = ['']; |
22 |
|
|
p (prefix.shift ()); |
23 |
|
|
|
24 |
|
|
function p (m) { |
25 |
|
|
var v = '<table><caption>'+m+'</caption><tbody>'; |
26 |
|
|
for (var i = 0; i < chars.length; i++) { |
27 |
|
|
n = m + chars[i]; |
28 |
|
|
v += '<tr><td>&'+n+';</td><td>&'+n+';</td></tr>'; |
29 |
|
|
prefix.push (n); |
30 |
|
|
} |
31 |
|
|
v += '</tbody></table>'; |
32 |
|
|
doc.body.innerHTML = v; |
33 |
|
|
var trs = doc.getElementsByTagName ('table')[0].tBodies[0].rows; |
34 |
|
|
var trsL = trs.length; |
35 |
|
|
for (var i = 0; i < trsL; i++) { |
36 |
|
|
var tr = trs[i]; |
37 |
|
|
if (tr.firstChild.innerHTML == tr.lastChild.innerHTML) { |
38 |
|
|
tr.className = 'non-entity'; |
39 |
|
|
} |
40 |
|
|
} |
41 |
|
|
|
42 |
|
|
if (!stopP && prefix.length) { |
43 |
|
|
window.setTimeout (function () { |
44 |
|
|
p (prefix.shift ()); |
45 |
|
|
}, 1000); |
46 |
|
|
} |
47 |
|
|
} |
48 |
|
|
</script> |
49 |
|
|
</body> |
50 |
|
|
</html> |