On Aug 1, 2009, at 02:50, Ian Hickson wrote:

On Tue, 21 Jul 2009, Boris Zbarsky wrote:

I don't really understand what your proposal would actually translate
to, in precise spec terms.

I haven't internalized your parsing algorithm rules, but my intuition
given the one compat requirement I know of here (not blowing away
documents in cases where IE doesn't blow them away) is that deferred
scripts should be treated as if the <script> tags appeared in the HTML character stream after all the content that is actually there... That
is, immediately before the EOF point.

I don't know how to know that we are before the EOF before we are at the
EOF, and I am very dubious about tokenising after hitting the EOF. For
example, document.close() inserts an EOF, and I don't feel comfortable
saying that after document.close() you can still document.write() to the
same document.

Have a piece of parser state for "stream ended". It's initially false. document.close() turns it true. The end of the network stream turns it true. When it gets set to true, schedule a task for calling the parser again for inspecting the flag.

When there are no pending scripts and "stream ended" is true, emit EOF. If there are pending scripts and 'stream ended' is true, make sure the script execution machinery pumps the parser again to avoid busy-waiting from rescheduling tasks repeatedly.

It's what IE does, and you found that we needed to be compatible with IE for this case, as far as I can tell. When we want to be compatible with IE, we should be compatible, not introduce yet another behaviour, IMHO.

Considering that the Firefox 3.5 behavior has shipped, it has been introduced for practical purposes.

--
Henri Sivonen
hsivo...@iki.fi
http://hsivonen.iki.fi/


Reply via email to