- From: <bugzilla@jessica.w3.org>
- Date: Wed, 19 May 2010 07:43:53 +0000
- To: public-html-bugzilla@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=9767
Summary: Consider ignoring document.write() when IE ignores it
if IE has a sane condition for ignoring it
Product: HTML WG
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: critical
Priority: P1
Component: HTML5 spec (editor: Ian Hickson)
AssignedTo: ian@hixie.ch
ReportedBy: hsivonen@iki.fi
QAContact: public-html-bugzilla@w3.org
CC: bzbarsky@mit.edu, mike@w3.org, public-html@w3.org,
jonas@sicking.cc
At bugzilla.mozilla.org, we've gotten a very small but non-zero number of
reports about build with the HTML5 parser enabled showing blank pages.
In all cases, this has been about document.write() without an insertion point
blowing away the document. The dominant pattern is that there's browser
sniffing and the code path for IE does document.write("<script
src='another-script-that-calls-document-write.js'></script>"); and the code
path for Gecko does var s = document.createElement("script"); s.src =
"another-script-that-calls-document-write.js"; document.body.appendChild(s);.
Thus, the problem would go away if the sites removed sniffing and used the
IE-targeted loading method for all browsers. (There's also been one report of
MITM malware injecting this problem to pages.)
However, experimentation shows that IE itself mitigates the problem compared to
what the spec says by ignoring document.write() in some cases.
See https://bug560256.bugzilla.mozilla.org/attachment.cgi?id=446166 for an
example.
Ignoring document.write() without a defined insertion point during the parse
would not be a nice solution, because it would introduce a race between
asynchronous script loads and the parse finishing. Thus, authors whose network
made the script always load before the parser is done might not notice a
problem but users whose network makes the script fire after the parser is done
would get the document blown away.
I would guess there's a compat reason why document.write() after the parser is
done implies document.open(), so I suppose always ignoring document.write()
without a defined insertion point isn't a solution, either.
At least at this point, I haven't worked out what criteria IE uses.
I'm kinda expecting that the outcome here is that there is no non-racy solution
that isn't overly complex and this will be WONTFIX. However, I'm filing this
bug in case I'm missing something. If there is a sanely implementable non-racy
condition when IE ignores document.write(), it might be worthwhile to spec it.
--
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
Received on Wednesday, 19 May 2010 07:43:55 UTC