*/ \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
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 ] );
X_Node_CHASHE[ this[ '_uid' ] = uid ] = this;
},
+ // TODO .mesure() -> X.Event.MESURED
'width' : X_Node_width,
'height' : X_Node_height,
'clientWidth' : X_Node_clientWidth,
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;
};
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
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
// 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
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
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
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