// (and which close themselves)\r
closeSelf : {colgroup:1,dd:1,dt:1,li:1,options:1,p:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}, // add tbody\r
\r
- // todo:\r
- plainText : { plaintext : 1, xmp : 1 },\r
-\r
sisters : {\r
th : { td : 1 },\r
td : { th : 1 },\r
fillAttrs : X.Dom.Attr.noValue, //{checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};\r
\r
// Special Elements (can contain anything)\r
- special : {script:1,style:1},\r
+ special : { script : 1, style : 1, plaintext : 1, xmp : 1, textarea : 1 },\r
\r
exec : function( html, handler, async ){\r
var special = X.Dom.Parser.special,\r
+ plainText = X.Dom.Parser.plainText,\r
startTime = async && X.getTime(),\r
_parseStartTag = X.Dom.Parser._parseStartTag,\r
_parseEndTag = X.Dom.Parser._parseEndTag,\r
\r
// Make sure we're not in a script or style element\r
if ( last && special[ last.toLowerCase() ] === 1 ) {\r
- if( 0 <= ( index = _parseEndTag( stack, handler, html ) ) ){\r
- //handler.chars( html.substring( 0, index ) );\r
- html = html.substring( index );\r
+ if( 0 <= ( index = html.toLowerCase().indexOf( '</' + last.toLowerCase() ) ) ){\r
+ handler.chars( html.substring( 0, index ) );\r
+ if( index = _parseEndTag( stack, handler, html ) ){\r
+ html = html.substring( index );\r
+ } else {\r
+ handler.chars( html );\r
+ html = '';\r
+ };\r
+ } else {\r
+ handler.chars( html );\r
+ html = '';\r
};\r
} else {\r
// Comment\r
( chr === '>' ) && ( phase = 9 );\r
( phase !== 2 ) && ( tagName = html.substring( start, i ) );\r
break;\r
- case 3 : // 属性名の開始を待つ\r
+ case 3 : // タグの終了を待つ\r
chr === '>' && ( phase = 9 );\r
break;\r
};\r