OSDN Git Service

Version 0.6.220, Fix the bug of X.HTMLParser.
authoritozyun <itozyun@user.sourceforge.jp>
Tue, 8 Nov 2016 04:17:44 +0000 (13:17 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Tue, 8 Nov 2016 04:17:44 +0000 (13:17 +0900)
0.6.x/js/02_dom/04_XBoxModel.js
0.6.x/js/02_dom/05_XNodeAttr.js
0.6.x/js/02_dom/09_XHTMLParser.js

index d62972b..dbf477a 100644 (file)
@@ -20,7 +20,7 @@ X_ViewPort[ 'listenOnce' ]( X_EVENT_INIT, function(){
                X_Node_BoxModel.CONTENT_BOX;\r
        \r
        if( X_Node_BoxModel_defaultBoxModel === X_Node_BoxModel.CONTENT_BOX ){\r
-               X_Node_BoxModel_boxSizingEnabled = node[ 'cssText' ]( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' +\r
+               X_Node_BoxModel_boxSizingEnabled = node[ 'cssText' ]( 'width:10px;padding:1px;border:2px solid red;margin:4px;' +\r
                        'box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;' )\r
                                                                                        [ 'width' ]() === 10;\r
        };\r
index 6dcd5c7..579f286 100644 (file)
@@ -190,7 +190,7 @@ function X_Node_attr( nameOrObj /* v */ ){
                };\r
                return this;\r
        } else\r
-       if( typeof nameOrObj === 'string' ){\r
+       if( X_Type_isString( nameOrObj ) ){\r
                // getter\r
                switch( nameOrObj ){\r
                        case 'id' :\r
index 27f2164..18cdc37 100644 (file)
@@ -59,12 +59,12 @@ var X_HTMLParser_CHARS = {
                        lastHtml       = html,\r
                        chars, last, text, index;\r
 \r
-               while ( html ) {\r
+               while( html ){\r
                        chars = true;\r
                        last  = stack[ stack.length - 1 ];\r
                        \r
                        // Make sure we're not in a script or style element\r
-                       if ( last && special[ handler.isXML ? last.toUpperCase() : last ] === 1 ) {\r
+                       if( last && special[ handler.isXML ? last.toUpperCase() : last ] === 1 ){\r
                                if( 0 <= ( index = html.toUpperCase().indexOf( '</' + ( handler.isXML ? last.toUpperCase() : last ) ) ) ){\r
                                        handler.chars( html.substring( 0, index ) );\r
                                        if( index = X_HTMLParser__parseEndTag( stack, handler, html ) ){\r
@@ -79,22 +79,22 @@ var X_HTMLParser_CHARS = {
                                };\r
                        } else {\r
                                // Comment\r
-                               if ( html.indexOf("<!--") === 0 ) {\r
-                                       if ( 0 < ( index = html.indexOf("-->") ) ) {\r
+                               if( html.indexOf("<!--") === 0 ){\r
+                                       if( 0 < ( index = html.indexOf("-->") ) ){\r
                                                handler.comment( html.substring( 4, index ) );\r
                                                html = html.substring( index + 3 );\r
                                                chars = false;\r
                                        };\r
        \r
                                // end tag\r
-                               } else if ( html.indexOf("</") === 0 ) {\r
-                                       if ( 2 < ( index = X_HTMLParser__parseEndTag( stack, handler, html ) ) ) {\r
+                               } else if( html.indexOf("</") === 0 ){\r
+                                       if( 2 < ( index = X_HTMLParser__parseEndTag( stack, handler, html ) ) ){\r
                                                html = html.substring( index );\r
                                                chars = false;\r
                                        };\r
        \r
                                // start tag\r
-                               } else if ( html.indexOf("<") === 0 ) {\r
+                               } else if( html.indexOf("<") === 0 ){\r
                                        if( index = X_HTMLParser__parseStartTag( stack, last, handler, html ) ){\r
                                                html  = html.substring( index );\r
                                                chars = false;\r
@@ -104,7 +104,7 @@ var X_HTMLParser_CHARS = {
                                        };\r
                                };\r
 \r
-                               if ( chars ) {\r
+                               if( chars ){\r
                                        index = html.indexOf("<");\r
                                        \r
                                        text = index < 0 ? html : html.substring( 0, index );\r
@@ -171,14 +171,16 @@ var X_HTMLParser_CHARS = {
                                case 4 : // 属性名の終わりを待つ\r
                                        chr === '=' ?\r
                                                ( ( phase = 6 ) && ( attrName = html.substring( start, i ) ) ) :\r
-                                       ( whiteSpace[ chr ] & 16 ) &&\r
-                                               ( ( phase = 5 ) && ( attrName = html.substring( start, i ) ) );\r
+                                       ( whiteSpace[ chr ] & 16 ) ?\r
+                                               ( ( phase = 5 ) && ( attrName = html.substring( start, i ) ) ) :\r
+                                       ( chr === '>' || ( empty = html.substr( i, 2 ) === '/>' ) ) &&\r
+                                               ( ( phase = 9 ) && ( attrs[ attrs.length ] = html.substring( start, i ) ) );\r
                                        break;\r
                                case 5 : // 属性の = または次の属性または htmlタグの閉じ\r
                                        !( whiteSpace[ chr ] & 16 ) &&// ie4 未対応の属性には cite = http:// となる\r
                                        //      1 :\r
                                        ( alphabets[ chr ] & 3 ) ?\r
-                                               ( ( phase = 4 ) && ( attrs[ attrs.length ] = attrName ) && ( start = i ) ) :\r
+                                               ( ( phase = 3 ) && ( attrs[ attrs.length ] = attrName ) && ( start = i ) ) : // <textarea readonly>\r
                                        chr === '=' ?\r
                                                ( phase = 6 ) :\r
                                        ( chr === '>' || ( empty = html.substr( i, 2 ) === '/>' ) ) &&\r
@@ -199,7 +201,7 @@ var X_HTMLParser_CHARS = {
                                        ( chr === '>' ) ?\r
                                                ( ( phase = 9 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) ) :\r
                                        !escape && !uri[ attrName ] && ( empty = html.substr( i, 2 ) === '/>' ) && // attr の val が uri で / で終わりかつ、未対応属性の場合\r
-                                               ( phase = 9 );\r
+                                               ( ( phase = 9 ) && saveAttr( attrs, attrName, html.substring( start, i ) ) );\r
                                        break;\r
                        };\r
                        escape = chr === '\\' && !escape; // \\\\ is not escape for "\r