WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED CONFIGURATION CHANGED
40068
Second document.write() of external script fails
https://bugs.webkit.org/show_bug.cgi?id=40068
Summary
Second document.write() of external script fails
Tony Gentilcore
Reported
2010-06-02 10:25:31 PDT
The second document.write() of an external script fails. Here's a minimal test case. This alerts "[object HTMLScriptElement]", "null": <script> document.write('<script src=ignored.js id=foo></scri'+'pt>'); alert(document.getElementById('foo')); document.write('<script src=ignored.js id=bar></scri'+'pt>'); alert(document.getElementById('bar')); </script> I'd expect it to work like writing two inline scripts. This alerts "[object HTMLScriptElement]", "[object HTMLScriptElement]": <script> document.write('<script id=foo></scri'+'pt>'); alert(document.getElementById('foo')); document.write('<script id=bar></scri'+'pt>'); alert(document.getElementById('bar')); </script>
Attachments
Testcase
(498 bytes, text/html)
2010-06-02 12:25 PDT
,
Tony Gentilcore
no flags
Details
View All
Add attachment
proposed patch, testcase, etc.
Tony Gentilcore
Comment 1
2010-06-02 10:34:54 PDT
Thinking about this more it makes some sense. The first write causes the parser to be blocked by the external script. While the parser is blocked, the script continues executing. It executes the second document.write(), but its content is parser-blocked. Thus at the point the getElementById('bar') executes, the parsed source does not contain the 'bar' script yet. The only way to fix this would be to pause script execution until the external script executes. It isn't clear to me if that is the way it should work or if this is working as intended. Perhaps HTML5 defines this behavior? Thoughts?
Eric Seidel (no email)
Comment 2
2010-06-02 11:31:37 PDT
Is this HTML5 only?
Tony Gentilcore
Comment 3
2010-06-02 11:33:04 PDT
This is without the HTML5 parser. I haven't tested it with HTML5.(In reply to
comment #2
)
> Is this HTML5 only?
This is without HTML5. I haven't tried it with the HTML5 parser.
Eric Seidel (no email)
Comment 4
2010-06-02 11:34:51 PDT
We should attach your test case to this bug, and see what the results are in firefox/IE. This behavior may or may not be expected.
Tony Gentilcore
Comment 5
2010-06-02 12:25:26 PDT
Created
attachment 57680
[details]
Testcase IE8: PASS Opera 10.5: PASS FF3.6: RACE (passes reliably if an alert is placed after first write) WebKit: FAIL
Ahmad Saleem
Comment 6
2022-07-29 16:59:57 PDT
All browsers (Safari 15.6, Chrome Canary 106 and Firefox Nightly 105 on macOS 12.5) match with each other in the attached test case and show "FAIL". I am not sure on web-spec whether all browsers were wrong or it is just wrong behaviour across all b browsers but just wanted to share latest test results. Thanks!
Alexey Proskuryakov
Comment 7
2022-08-14 14:16:41 PDT
The test itself is now broken, as the written scripts don't show up in the DOM until later. But they do, and can be seen in Web Inspector in all browsers. Still, this is fixed (config changed).
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug