0

これは、html/javascrpt ファイル内のコードです。

var console = console || 
    {log:function(msg){window.runtime.trace(msg);}};
function waitToFinish(){
    console.log("this is wait to finish loading the url");
    console.log(this.readyState);
    console.log(this.status);
    if(this.readyState != 4){
        return;
    }
    console.log("readystate is 4");
    console.log("response text length is:"+this.responseText.length);
    if (this.status === 200 || this.status == 304) { // status is allways 0
        console.log("success");
        console.log("response text length is:"+this.responseText.length);
    }
}
function openURL(url){
    console.log("opening link:"+url);
    xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", url 
            ,true);
    xmlhttp.onreadystatechange
        =waitToFinish;
    xmlhttp.send(null);
    return false; 
<input type=button onclick="openURL('http://www.yahoo.com');" value="click me" />
}

空気中の出力は次のとおりです。

opening link:http://www.yahoo.com
this is wait to finish loading the url
4
0
readystate is 4
response text length is:0

これは、forcecors プラグインを有効にした Firefox の出力です。

opening link:http://www.yahoo.com
GET http://www.yahoo.com/ 200 OK        4.3s    
this is wait to finish loading the url
1
0
this is wait to finish loading the url
2
200
this is wait to finish loading the url
... a bunch of times readystate change is called
this is wait to finish loading the url
4
200
readystate is 4
response text length is:317163
success
response text length is:317163

空中では、onreadystate が 1 回呼び出されるだけで、state はすぐに 4 になりますが、status は 0 のままで、responseText は空です。

http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7eb3.html

readystate のみをチェックする xmlhttprequest の例を示しますが、そうすると、毎回 responseText が常に空になります。同期リクエストは機能しますが、非同期は機能しません

4

1 に答える 1

0

Windows AIR では IE を使用しているため、IE がオフラインで動作するように設定されていると、リクエストで奇妙なことが起こりました。キャッシュにあるので問題ないものもあれば、失敗するものもありました。

IEをオンラインで動作するように設定すると、すべてが再び「正常」に動作しました。

于 2013-01-05T11:22:41.860 に答える