OSDN Git Service

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