直接上代码啦:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Untitled</title> </head> <body> <script type="text/javascript"> function foo() { alert("document.body.parentNode.previousSibling.tagName\n" + document.body.parentNode.previousSibling.tagName); alert("document.body.parentNode.parentNode.firstChild.tagName\n" + document.body.parentNode.parentNode.firstChild.tagName); alert("document.body.parentNode.parentNode.firstChild.nodeName\n" + document.body.parentNode.parentNode.firstChild.nodeName); alert("document.body.parentNode.parentNode.firstChild.nodeValue\n" + document.body.parentNode.parentNode.firstChild.nodeValue); alert("document.body.parentNode.parentNode.lastChild.tagName\n" + document.body.parentNode.parentNode.lastChild.tagName); alert("document.body.parentNode.parentNode.lastChild.nodeName\n" + document.body.parentNode.parentNode.lastChild.nodeName); } function redoctypeme(which) { alert("before\n" + document.body.parentNode.parentNode.firstChild.nodeValue); if(which == 1) { document.body.parentNode.parentNode.firstChild.nodeValue = "DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\""; } else { document.body.parentNode.parentNode.firstChild.nodeValue = "DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\""; } alert("after\n" + document.body.parentNode.parentNode.firstChild.nodeValue); foobar = document.body.innerHTML; alert("empty"); document.body.innerHTML = ""; alert("reset"); document.body.innerHTML = foobar; } </script> <a href="javascript: foo()">stuff</a> <a href="javascript: redoctypeme('1')">doctype 1</a> <a href="javascript: redoctypeme('2')">doctype 2</a> <hr> <div style="background: #0c0; 200px; color: #fff;">200px</div> <div style="background: #c00; 200px; padding: 20px; border: 30px solid #00c;"> </div> <div style="background: #0c0; 300px; color: #fff;">300px</div> </body> </html>