IE9 で 画像バイナリの取得 VBA をかましている\r
http://web.archive.org/web/20130808105151/http://gurimmer.lolipop.jp/daihakken/2012/05/22/javascriptajaxxmlhttprequest%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Fajax%E3%81%AE%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89\r
http://d.hatena.ne.jp/maachang/20130221/1361427565\r
+\r
+http://web.archive.org/web/20130531162446/http://gurimmer.lolipop.jp/daihakken/2012/06/25/ajaxjavascript%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96xmlhttp%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%A8%E3%81%AF/\r
+\r
+IE8 以下で xhr の失敗率が高い問題 \r
+http://tkengo-totoro.blogspot.jp/2011/11/iexmlhttprequest.html\r
+TODO クライアント側にもリトライ機構を入れてみる\r
+\r
*/\r
var // Opera7.6+, Safari1.2+, khtml3.?+, Gecko0.9.7+\r
// ie7&8 ではローカルリソースには ActiveX の XHR を使う\r
X_Net_XHR_createXDR = window[ 'XDomainRequest' ] && function(){ return X_Net_XHR_xdr || ( X_Net_XHR_xdr = new XDomainRequest() ); },\r
X_Net_XHR_xdr = X_Net_XHR_createXDR && X_Net_XHR_createXDR(),\r
\r
- // ie11の互換モード(7,8,5)の msxml はいまいち動かない\r
+ // ie11の互換モード(7,8)の msxml はいまいち動かない\r
X_Net_XHR_createMSXML = X_UA[ 'ActiveX' ] && ( X_UA[ 'IE5x' ] || X_UA[ 'IE6' ] || X_URL_IS_LOCAL ) &&\r
( new Function( 'f', [\r
'var x=".XMLHTTP",',\r
X_Net_XHR_createMSXML = null;\r
};\r
\r
-X[ 'Net' ][ 'XHR' ] = {\r
+X[ 'XHR' ] = {\r
+\r
+ 'W3C' : X_Net_XHR_createW3C ? 1 : 0,\r
+ 'MSXML' : X_Net_XHR_createMSXML ? 2 : 0,\r
+ 'XDR' : X_Net_XHR_createXDR ? 4 : 0,\r
\r
/*\r
* http://hakuhin.jp/as/import.html\r
* http://hakuhin.jp/as/javascript.html\r
* Flash から JavaScript にアクセスする(3+)\r
*/\r
- 'FLASH' : false,\r
+ 'FLASH' : X_Pulgin_FLASH_ENABLED && 4 <= X_Pulgin_FLASH_VERSION ? 8 : 0,\r
+ \r
+ 'GADGET' : 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ] ? 16 : 0,\r
\r
/**\r
* https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\r
* Progress Events Chrome7, firefox3.5, ie10, opera12, Safari?, Chrome for Android 0.16\r
*/\r
- 'PROGRESS' : X_Net_XHR_progress,\r
+ 'PROGRESS' : X_Net_XHR_progress,\r
\r
- 'UL_PROGRESS' : X_Net_XHR_upload,\r
+ 'UPLOAD_PROGRESS' : X_Net_XHR_upload,\r
\r
- // or gadget proxy\r
- 'CORS' : X_Net_XHR_xdr || ( X_Net_XHR_w3c && X_Net_XHR_w3c.withCredentials !== undefined )\r
+ // or gadget proxy or flash\r
+ 'CORS' : X_Net_XHR_xdr || ( X_Net_XHR_w3c && X_Net_XHR_w3c.withCredentials !== undefined )\r
};\r
\r
+if( X_Net_XHR_msXMLVer ) X[ 'XHR' ][ 'MSXML_VERSION' ] = X_Net_XHR_msXMLVer;\r
+\r
if( X_Net_XHR_w3c || X_Net_XHR_msXML ){\r
\r
X_TEMP.X_Net_XHR_init = function(){\r
this._dataType = obj[ 'dataType' ] || X_URL_getEXT( url );\r
\r
if( !raw || xDomain !== this._isXDR || ( X_Net_XHR_createMSXML && isFile !== this._isMsXML ) ){\r
- this[ 'unlisten' ]( [ 'load', 'readystatechange', 'progress', 'error', 'timeout' ] );\r
+ raw && this[ 'unlisten' ]( [ 'load', 'readystatechange', 'progress', 'error', 'timeout' ] );\r
init = true;\r
this[ '_rawObject' ] = raw = xDomain ?\r
X_Net_XHR_createXDR() :\r
};\r
\r
if( !this._isXDR && ( this._isMsXML ? 3 <= X_Net_XHR_msXMLVer : raw.setRequestHeader ) ){ // msxml は setRequestHeader getter がいけない\r
+ \r
+ /*\r
+ if( noCache ){\r
+ headers[ 'Pragma' ] = 'no-cache';\r
+ headers[ 'Cache-Control' ] = 'no-cache';\r
+ headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT';\r
+ } else */ \r
// http://nakigao.sitemix.jp/blog/?p=2040\r
// json 取得時に SafariでHTTP/412のエラー。但し相手が audio の場合、この指定があるとロードに失敗する。 iOS8.2, iOS7.1 では遭遇せず\r
if( this._dataType === 'json' ){\r
if( method === 'POST' && !headers[ 'Content-Type' ] ){\r
headers[ 'Content-Type' ] = 'application/x-www-form-urlencoded';\r
};\r
- /*\r
- if( noCache ){\r
- headers[ 'Pragma' ] = 'no-cache';\r
- headers[ 'Cache-Control' ] = 'no-cache';\r
- headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT';\r
- }; */\r
+\r
\r
for( p in headers ){\r
if( X_EMPTY_OBJECT[ p ] ) continue;\r
},\r
\r
cancel : function(){\r
- /* X.Net.XHR.CANCELABLE && */ this[ '_rawObject' ].abort && this[ '_rawObject' ].abort();\r
+ /* this[ '_rawObject' ].abort && */ this[ '_rawObject' ].abort();\r
this._canceled = true;\r
},\r
\r
// XMLHttpRequest の使い方\r
// http://webos-goodies.jp/archives/50548720.html\r
// XMLHttpRequest オブジェクトを再利用する際も、 abort メソッドを呼び出す必要があるようです。\r
- this[ '_rawObject' ].abort && this[ '_rawObject' ].abort(); \r
+ /* this[ '_rawObject' ].abort && */ this[ '_rawObject' ].abort(); \r
\r
// XMLHttpRequest で順番にリソースを取得する\r
// http://note.chiebukuro.yahoo.co.jp/detail/n16248\r
http://www.semblog.org/msano/archives/000407.html\r
* */ \r
case 'readystatechange' :\r
- //if( !X.Net.XHR.PROGRESS ){\r
+ //if( !X.XHR.PROGRESS ){\r
switch( raw.readyState ){\r
case 0 :\r
case 1 :\r