IE6でhttps://~ で発生する
サイト上から
非同期通信でデータを取得し取得が完了したら結果をサブウィンドウに表示する処理を行ったところ
一度目はデータを読み込みサブウィンドウを開いて表示したものの
2回目はサブウィンドウを開くそぶりもない・・・
JavaScriptにalert()を入れてみたところ
どうやら通信に行っていないようだ
xmlHttpRequest.onreadyStateChange = function() {
// ↓ここにalert
alert(‘きたよ!’);
if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
subwin = (“”,”subwin”,”width=400,height=370″);
subwin.document.open();
subwin.document.write(xmlHttpRequest.responseText);
subwin.document.close();
}
}
「きたよ!」が出ない・・・
なにが悪いのかな・・・・と調べたところ
どうやらIE6でSSL通信の場合キャッシュを見てしまって通信すら行かないらしい・・・
上記ソースの場合、通信しないとサブウィンドウが開かないので
シレっと何事もないようになってしまうから厄介だ・・・
この場合、手っ取り早いのは
リクエスト送信時にタイムでも付けてしまうこと・・・
var time = (new Date()).getTime();
xmlHttpRequest.open(“GET”, “/service/AAAA?” + time);
IE7やFireFoxでは再現しないみたい(IE8は試してない)
キーワード
onreadyStateChange キャッシュ ssl サブウィンドウ