OSDN Git Service

Version 0.6.47, fix for IE5 & Opera7.x.
[pettanr/clientJs.git] / 0.6.x / js / dom / 19_XDomParser.js
index 1b654c5..db0c897 100644 (file)
@@ -141,7 +141,7 @@ X.Dom.Parser = {
                        l     = html.length,\r
                        i     = 0,\r
                        attrs = [],\r
-                       tagName, empty,\r
+                       tagName, empty = false,\r
                        chr, start, attrName, quot, escape;\r
                \r
                while( i < l && phase < 9 ){\r
@@ -195,14 +195,15 @@ X.Dom.Parser = {
                                                ( ( phase = 3 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :\r
                                        ( chr === '>' ) ?\r
                                                ( ( phase = 9 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :\r
-                                       ( !escape && uri.indexOf( attrName ) === -1 && html.substr( i, 2 ) === '\/>' ) && // attr の val が uri で / で終わりかつ、未対応属性の場合\r
-                                               ( empty = true );\r
+                                       !escape && !uri[ attrName ] && ( empty = html.substr( i, 2 ) === '/>' ) && // attr の val が uri で / で終わりかつ、未対応属性の場合\r
+                                               ( phase = 9 );\r
                                        break;\r
                        };\r
                        escape = chr === '\\' && !escape; // \\\\ is not escape for "\r
                        ++i;\r
                };\r
                if( phase === 9 ){\r
+                       if( empty ) ++i;\r
                        if( X.Dom.Parser.parseStartTag( stack, last, handler, tagName, attrs, empty, i ) === false ) return false;\r
                        return i;\r
                };\r
@@ -270,7 +271,7 @@ X.Dom.Parser = {
                        };\r
                };\r
                X.Dom.Parser.closeSelf[ tagLower ] === 1 && ( last === tagName || ( sisters[ tagLower ] && sisters[ tagLower ][ last.toLowerCase() ] === 1 ) ) && parseEndTag( stack, handler, last );\r
-               unary = X.Dom.Parser.empty[ tagName.toUpperCase() ] || !!unary;\r
+               unary = unary || X.Dom.Parser.empty[ tagName.toUpperCase() ];\r
                !unary && ( stack[ stack.length ] = tagName );\r
                \r
                return handler.start( tagName, attrs, unary, index );\r