[whatwg] What should document.write() do when called from setTimeout or event handlers?
Ian Hickson
ian at hixie.ch
Mon Jul 31 15:34:55 PDT 2006
I'm trying to spec document.write() and I've run into a difficult edge
case.
Imagine the server sees this:
<!DOCTYPE HTML>
<html>
<head>
function test() {
document.write('TEST');
}
setTimeout(test, 1000);
</head>
<body>
<p><img src="test.png" alt="" onload="test()"></p>
...and then time passes. The image loads, the timeout fires.
Then once the image has loaded and the timer has fired:
</body>
</html>
...and the connection is closed.
What should happen?
IE seems to make those calls to document.write() simply blow away the
document, as if the document was closed. Opera seems to do the same.
Mozilla seems to make the document.write() calls insert text into the
parser, as if they'd been called inline, with the result that the inserted
text could appear pretty much anywhere. (It's actually a bit more complex
than that -- it avoids inserting into tokens -- but that's a detail.)
I couldn't work out what Safari and MacIE do; they seem to delay the
timeout somehow and then print to the end of the page.
Any preferences? I'm particularly interested in feedback from browser
developers here as to whether there is anything I should know about how
easy/hard it is to do one thing or the other.
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list