OSDN Git Service

Version 0.6.38, fix for safari2-.
[pettanr/clientJs.git] / 0.6.x / js / dom / 19_XDomParser.js
index a067ce4..9d664af 100644 (file)
@@ -22,9 +22,6 @@ X.Dom.Parser = {
        // (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
@@ -47,10 +44,11 @@ X.Dom.Parser = {
        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
@@ -64,9 +62,17 @@ X.Dom.Parser = {
                        \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
@@ -226,7 +232,7 @@ X.Dom.Parser = {
                                        ( 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