OSDN Git Service

Version 0.6.219, Fix the bug of X.Net.
authoritozyun <itozyun@user.sourceforge.jp>
Wed, 26 Oct 2016 04:41:32 +0000 (13:41 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Wed, 26 Oct 2016 04:41:32 +0000 (13:41 +0900)
0.6.x/js/01_core/13_XClass.js
0.6.x/js/02_dom/08_XNodeSelector.js
0.6.x/js/02_dom/20_XNode.js
0.6.x/js/06_net/01_XNetXHR.js

index 2b93669..6174957 100644 (file)
@@ -304,6 +304,7 @@ X_Class_CommonMethods =
        // TODO instanceof に対応したブラウザはそちらを使用\r
        'instanceOf' : function( klass ){\r
                var Super = this;\r
+\r
                if( this.constructor === klass ) return true;\r
                while( Super = X_Class_getClassDef( Super ).SuperClass ){\r
                        if( Super === klass ) return true;\r
index 2c52acb..0868315 100644 (file)
@@ -253,7 +253,7 @@ function X_Node_Selector__parse( query, last ){
         */     \r
        function X_Node_find( queryString ){\r
                var HTML      = X_Node_html,\r
-                       scope     = this.constructor === X_NodeList && this.length ? this : [ this.constructor === Node ? this : X_Node_body ],\r
+                       scope     = this.constructor === X_NodeList && this.length ? this : [ this.constructor === Node || this[ 'instanceOf' ] && this[ 'instanceOf' ]( Node ) ? this : X_Node_body ],\r
                        parents   = scope, // 探索元の親要素 XNodeList の場合あり\r
                        // TODO { title : true,,, }\r
                        noLower   = 'title id name class for action archive background cite classid codebase data href longdesc profile src usemap',// + X_Dom_DTD_ATTR_VAL_IS_URI.join( ' ' ),\r
index 0a0adf7..6b67d04 100644 (file)
@@ -155,7 +155,8 @@ var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
                        var uid = X_Node_CHASHE.length,
                                css, xnodes, xnode, parent;
                        
-                       if( X_Node_newByTag ){
+                       // TODO 継承クラスで this.Super('DIV') ができない! -> サブクラスから呼ばれた場合も
+                       if( X_Node_newByTag || this.constructor !== Node ){
                                X_Node_newByTag = false;
                                this[ '_tag' ]  = v.toUpperCase();
                                arguments[ 1 ] && this[ 'attr' ]( arguments[ 1 ] );
@@ -223,6 +224,7 @@ var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
                        X_Node_CHASHE[ this[ '_uid' ] = uid ] = this;
                },
                
+               // TODO .mesure() -> X.Event.MESURED
                'width'          : X_Node_width,
                'height'         : X_Node_height,
                'clientWidth'    : X_Node_clientWidth,
@@ -362,6 +364,7 @@ function X_Node_getType( v ){
        if( X_Type_isString( v ) ){
                return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? X_NodeType_HTML_STRING : X_NodeType_STRING;
        };
+       // Node サブクラスのインスタンス
        if( v[ 'instanceOf' ] && v[ 'instanceOf' ]( Node ) ) return X_NodeType_XNODE;
        return 0;
 };
index c03b635..2c1d73a 100644 (file)
@@ -171,7 +171,7 @@ if( X_XHR_w3c || X_XHR_msXML ){
                                        postdata = obj[ 'postdata' ] || '',\r
                                        timeout  = obj[ 'timeout' ] || 20000,\r
                                        noCache  = obj[ 'cache' ] !== true,\r
-                                       dataType = X_XHR._dataType = obj[ 'dataType' ], // ext が入っている\r
+                                       dataType = X_XHR._dataType = obj[ 'dataType' ], // 明示され無い場合、ext が入っている\r
                                        xDomain  = !X_URL_isSameDomain( url ),\r
                                        isFile   = X_URL_isLocal( url ),\r
                                        init,\r
@@ -210,13 +210,15 @@ if( X_XHR_w3c || X_XHR_msXML ){
                                                        raw.responseType = X_XHR._dataType = 'text';\r
                                                        break;\r
                                                case 'json' : // firefox9- は moz-json\r
-                                                       raw.responseType = X_XHR._dataType = X_UA[ 'Gecko' ] < 10 ? 'moz-json' : X_UA[ 'Gecko' ] ? dataType : ''; // Iron 37 でエラー\r
+                                                       raw.responseType = X_UA[ 'Gecko' ] < 10 ? 'moz-json' : X_UA[ 'Gecko' ] ? dataType : ''; // Iron 37 でエラー\r
+                                                       //X_XHR._dataType  = 'json';\r
                                                        break;\r
                                                case 'document' :\r
                                                case 'xml' :\r
                                                case 'html' :\r
                                                case 'htm' :\r
-                                               // svg\r
+                                               case 'svg' :\r
+                                               case 'vml' :\r
                                                        raw.responseType = X_XHR._dataType = 'document';\r
                                                        break;\r
                                                case 'blob' :\r
@@ -230,24 +232,27 @@ if( X_XHR_w3c || X_XHR_msXML ){
                                // http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_r_1.html\r
                                if( !X_XHR._isMsXML && raw.overrideMimeType ){\r
                                        switch( type = dataType ){\r
+                                               case 'document' :\r
+                                               case 'xml' :\r
                                                case 'html' :\r
                                                case 'htm' :\r
-                                               case 'xml' :\r
+                                               case 'svg' :\r
+                                               case 'vml' :\r
                                                        tmp = 'text/xml';\r
                                                        break;\r
                                                case 'json' :\r
                                                        tmp = 'application/json';\r
                                                        break;\r
                                                case 'mp3' :\r
-                                                       type = 'mpeg';  \r
+                                                       tmp = 'mpeg';   \r
                                                case 'weba' :\r
-                                                       type = type || 'webm';                  \r
+                                                       tmp = tmp || 'webm';                    \r
                                                case 'opus' :\r
-                                                       type = type || 'ogg';\r
+                                                       tmp = tmp || 'ogg';\r
                                                case 'ogg' :    \r
                                                case 'wav' :                                            \r
                                                case 'aac' :\r
-                                                       tmp = 'audio/' + type;\r
+                                                       tmp = 'audio/' + ( tmp || type );\r
                                                        break;\r
                                                case 'm4a' :\r
                                                case 'mp4' :\r
@@ -263,7 +268,7 @@ if( X_XHR_w3c || X_XHR_msXML ){
                                                        break;\r
                                                        \r
                                        };\r
-                                       if( tmp = obj[ 'mimeType' ] || tmp ) raw.overrideMimeType( tmp );\r
+                                       if( obj[ 'mimeType' ] || tmp ) raw.overrideMimeType( obj[ 'mimeType' ] || tmp );\r
                                };\r
 \r
                                if( !X_XHR._isXDR && ( X_XHR._isMsXML ? 3 <= X_XHR_msXMLVer : raw.setRequestHeader ) ){ // msxml は setRequestHeader getter がいけない\r
@@ -274,11 +279,10 @@ if( X_XHR_w3c || X_XHR_msXML ){
                                                headers[ 'Cache-Control' ] = 'no-cache';\r
                                                headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT';\r
                                        } */\r
-               \r
-                                       // http://nakigao.sitemix.jp/blog/?p=2040\r
-                                       // json 取得時に SafariでHTTP/412のエラー。但し相手が audio の場合この指定があるとロードに失敗する。 iOS8.2, iOS7.1 では遭遇せず\r
-                                       if( dataType === 'json' ){\r
-                                               headers[ 'If-Modified-Since' ] = ( new Date ).toUTCString();\r
+\r
+                                       // http://8note.phpapps.jp/jquery-ajax%E3%81%A7%E3%81%AE412%E3%82%A8%E3%83%A9%E3%83%BC/\r
+                                       if( dataType === 'json' && X_UA[ 'Safari' ] ){\r
+                                               headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT';\r
                                        };\r
                                        \r
                                        // http://boscono.hatenablog.com/entry/2013/12/23/152851\r
@@ -477,7 +481,6 @@ if( X_XHR_w3c || X_XHR_msXML ){
                                                                        data = X_Script_try( X_Object_find, [ raw, 'responseText' ] );\r
                                                                        break;\r
                                                                case 'json' :\r
-                                                               case 'moz-json' :\r
                                                                        data = X_Script_try( X_Object_find, [ raw, 'response' ] ) || X_Script_try( X_Object_find, [ raw, 'responseText' ] );\r
                                                                        // eval() を使っているけど JSON の無いブラウザは XDomain な XHR はできないのでよしとする。\r
                                                                        // XDomain な XHR の際は Flash 等で代替し、その中に Json parser も組み込む。\r