X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F06_net%2F01_XNetXHR.js;h=0094a05fc3b54ded430d615463dc0ba3c5f6acb5;hb=527f50d3e1930a335a6525b5c973ab27fe385868;hp=411de411028358b817d5959092e302b37110c59e;hpb=34431df46635079c1ce6626c9caf1456f88e91bd;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/06_net/01_XNetXHR.js b/0.6.x/js/06_net/01_XNetXHR.js index 411de41..0094a05 100644 --- a/0.6.x/js/06_net/01_XNetXHR.js +++ b/0.6.x/js/06_net/01_XNetXHR.js @@ -43,6 +43,17 @@ IE8 以下で xhr の失敗率が高い問題 http://tkengo-totoro.blogspot.jp/2011/11/iexmlhttprequest.html TODO クライアント側にもリトライ機構を入れてみる + +TODO xml の取得には XMLDOM を使用する +var activex = JKL.ParseXML.HTTP.ACTIVEX_XMLHTTP; // IXMLHttpRequest +if ( this.method == "GET" && ! this.textmode ) { + // use IXMLDOMElement to accept any mime types + // because overrideMimeType() is not available on IE6 + activex = JKL.ParseXML.HTTP.ACTIVEX_XMLDOM; // IXMLDOMElement +}; +// debug.print( "new ActiveXObject( '"+activex+"' )" ); +this.req = new ActiveXObject( activex ); + */ var // Opera7.6+, Safari1.2+, khtml3.?+, Gecko0.9.7+ // ie9- ではローカルリソースには MSXML を使う @@ -103,7 +114,7 @@ X[ 'XHR' ] = { * http://hakuhin.jp/as/javascript.html * Flash から JavaScript にアクセスする(3+) */ - 'FLASH' : X_Pulgin_FLASH_ENABLED && 4 <= X_Pulgin_FLASH_VERSION ? 8 : 0, + 'FLASH' : 4 <= X_Pulgin_FLASH_VERSION ? 8 : 0, 'GADGET' : 5.5 <= X_UA[ 'IE' ] || !X_UA[ 'IE' ] ? 16 : 0, @@ -424,7 +435,7 @@ if( X_XHR_w3c || X_XHR_msXML ){ headers = { 'Content-Type' : raw.contentType }; } else if( ( X_XHR._isMsXML ? 3 <= X_XHR_msXMLVer : raw.setRequestHeader ) && ( headers = raw.getAllResponseHeaders() ) ){ - headers = X_NET_XHR_parseResponseHeaders( headers ); + headers = X_XHR_parseResponseHeaders( headers ); }; // https://code.google.com/p/fakeworker-js/source/browse/src/javascript/fakeworker.js @@ -494,7 +505,45 @@ if( X_XHR_w3c || X_XHR_msXML ){ break; }; }, - + +/* + * http://www.kawa.net/works/js/jkl/parsexml.html + * +// ================================================================ +// method: documentElement() +// return: XML DOM in response body + +JKL.ParseXML.HTTP.prototype.documentElement = function() { + // debug.print( "documentElement: "+this.req ); + if ( ! this.req ) return; + if ( this.req.responseXML ) { + return this.req.responseXML.documentElement; // XMLHTTPRequest + } else { + return this.req.documentElement; // IXMLDOMDocument + } +}; + +// ================================================================ +// method: responseText() +// return: text string in response body + +JKL.ParseXML.HTTP.prototype.responseText = function() { + // debug.print( "responseText: "+this.req ); + if ( ! this.req ) return; + + // Safari and Konqueror cannot understand the encoding of text files. + if ( navigator.appVersion.match( "KHTML" ) ) { + var esc = escape( this.req.responseText ); +// debug.print( "escape: "+esc ); + if ( ! esc.match("%u") && esc.match("%") ) { + return decodeURIComponent(esc); + } + } + + return this.req.responseText; +}; + */ + onTimeout : function(){ var raw = X_XHR[ '_rawObject' ], live = !X_XHR._canceled || !X_XHR._busy; @@ -529,7 +578,7 @@ if( X_XHR_w3c || X_XHR_msXML ){ * 複数の情報が存在する場合、改行で区切られています。 */ -function X_NET_XHR_parseResponseHeaders( headerStr ){ +function X_XHR_parseResponseHeaders( headerStr ){ var headers = {}, headerPairs, i = 0, l, headerPair, index, key, val; if( !headerStr ) return headers;