I have a peculiar situation where I am only given control of the contents of a document's <body>. The host, I assume in an effort to remain flexible, is not declaring a doctype which will throw IE into quirks mode immediately. With my limited control over the document, what can I do to force IE to render the page in standards mode?
views:
65answers:
2How can you force IE to render in standards mode if you only have control of the contents of body?
I believe you can't do anything about it unless you say, rewrite the contents of the page dynamically with JS and forcefully insert a doctype.
Can you go into specifics of how much control you have over the <body>
? Are you allowed to do JS/scripting?
EDIT: Here's an attempt but I didn't test it in IE. It may give you ideas. I document.write()
the outerHTML
of document.documentElement
and it turns the compatMode into CSS1Compat.
You may need to strip out the script block upon rewrite. Like I said, I wouldn't really recommend trying this...
http://medero.org/first-line.html
EDIT #2: It seems to surprisingly work in IE6. But upon refresh, IE caches it somehow and it permanently stays in its .document.write()
ed form. To counter that, append it with a query string, eg ?203984234
.
Again, I'm not sure what your situation is, but I hope this gives you ideas or helps.
EDIT #3: I rewrote it and bound the document.write
to window.onload
. You will need to append a unique query string every time you visit it to see the effect, because it caches it after it .write
's it.
http://medero.org/rewrite.html?f30324433322111
If you need something more instantaneous you can probably jack jQuery's DOM ready function to rewrite it before the window loads.
Miscellaneous Notes:
- You could probably hide the entire html document through CSS until the
document.write
is invoked if visually it matters - You should probably strip the
<script>
document.write before savingouterHTML
so that the newly written page doesn't have thescript
block.
Have a look at this Defining Document Compatibility article on MSDN. Perhaps writing out the X-UA-Compatible
meta tag will work.