- From: Tommy Thorsen <tommy@kvaleberg.com>
- Date: Tue, 11 Nov 2008 11:58:02 +0100
Ian Hickson wrote: > On Mon, 10 Nov 2008, Tommy Thorsen wrote: >> From an implementors point of view, it's good to have clearly defined >> boundaries between modules. An implementation would typically have one >> module that tokenises and parses html and one module that renders the >> resulting dom to the screen. If all the unexpected input is dealt with >> in the parsing module, then you can make some assumptions in the >> rendering module which can greatly simplify the implementation. Having >> to deal with an arbitrary amount of illegal input in either module is, >> IMHO, not the ideal design. >> > > Unfortunately, we have little choice in the matter. Scripting and XML both > allow you to unambiguously create highly non-conforming DOMs, e.g. with > <title> elements as the root element and <html> elements as children of > <input> elements. The renderer has to deal with all such DOMs. > > I just came across another related problem. Consider the following markup: <!doctype html><select><title>TITLE</title></select> My version of Firefox moves the title to head, Opera ignores the title completely, and the html 5 parsing algorithm produces the following peculiar markup: <!DOCTYPE html> <html> <head></head> <body> <select>TITLE</select> </body> </html> Should this title be allowed or ignored? Right now we ignore the start and end tags, but insert the CDATA into the select element. I'm tempted to ignore CDATA unless the current node is an option element in the "in select" insertion mode. Since we were discussing scripts creating unexpected DOMs, I had to try the following: <!doctype html> <script> function button_onclick() { document.getElementById('myselect').innerHTML = '<title>TITLE</title>'; alert('title inserted'); } </script> <select id="myselect"></select> <input type="button" value="Make Title" onclick="button_onclick();" /> On Firefox, the title is inserted into the select element, but does not actually work. Opera seems to prevent the title element from being inserted into the select element altogether. -Tommy
Received on Tuesday, 11 November 2008 02:58:02 UTC