- ベストアンサー
Internet Explorer のリフレッシュが効かない
JavaScriptのソースコードを変更してプログラムを走らせようとして、リフレッシュボタンを押しても、アドレスバーにURLを再入力しても、すでにキャッシュされているページしか表示されず、変更した内容が反映されません。 Netscape や FireFox では 変更したソースコードの内容が反映されています。 基本的な IE の設定の問題ではないかと思いますが、どうすればよいのかどなたか教えてください。お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
call_add()をどのタイミングで呼び出しているか、によりますね。 document.writeが ・ページ読み込み中 ・読み込み完了後(本件はこちらだと推測) でそれぞれ挙動が違うのでその絡みでしょうね。 --以後後者を前提とした話-- 読み込み完了後のdocument.writeは、新たにページを出力し、出力は別物のページとして扱われます。 出力後に、「ソースの表示」をしてみるとなんとなくわかるでしょう。 あなたが「更新したファイル」ではなく、 あなたが「出力した情報」(静的なものとなる)がブラウザに表示されている場合は、 リロードしてもその情報のみを読み込むので元ページのスクリプトは無効です。 <div id="log"></div>のようなものを用意しておき、 var log=document.getElementById('log');//一回だけグローバル変数になるように実行 log.innerText+="出力内容"; のように記述するようにすると、リロードも効くようになるでしょう。
その他の回答 (2)
- 15mm
- ベストアンサー率65% (65/100)
ieだとCtrl+F5で強制リロード、らしいです。
お礼
ご回答ありがとうございます。 いろいろなスクリプトでやってみましたら、Ctrl + F5 でリロードしますし、いつものようにリフレッシュボタンを押してもリロードしています。 しかし下のスクリプトだけはどうしてもできません。 これは try - catch のテストプログラムです。 0-9 までの範囲の一桁の整数を入れると結果が出て、それ以外はエラーになるようにしてあり、first, second という変数にいろいろな値を入れてテストしています。 どこかにプログラム上のミスがあるのでしょうか? <script language="javascript" type="text/javascript"> function add(a,b){ if ( (a<0 || a>9)&&(b<0 || b>9) ){ throw "neither number is in the 0 -- 9 range.."; } else if(a<0 || a>9){ throw "first number is not 0 -- 9 range.."; } else if(b<0 || b>9){ throw "scond number is not 0 -- 9 range.."; } else{ return a+b; } } function call_add(){ var first=-4; var second=5; try{ document.write("result is "+ add(first,second)+ " --- </br>"); } catch(e){ var msg="JavaScript encountered the following error: \n\n"; if(navigator.userAgent.indexOf("MSIE") != -1){ msg += e.description; } else { msg += e; } alert(msg); } document.write("This line is supposed to be displayed any time.</br>"); } </script>
- zxcv0000
- ベストアンサー率56% (111/196)
あきらめずに何回も更新ボタンを押すと、リフレッシュされる場合*も*ある様です。 JavaScript や CSS の外部ファイルは、更新ボタン 2回でリフレッシュされるケースが多かった記憶があります。 IEの場合、開発者や管理者より「一般ユーザー」に便宜を計る度合いが強いんじゃ無いでしょうか。
お礼
ご回答ありがとうございます。 いろいろなスクリプトで試してみたら、たいていのものはリフレッシュボタンで再ロードしますが、私が今やっている try-catch を使ったエラー処理のスクリプトはどうしても再ロードしません。 IE をいったん閉じて再度オープンしたときだけ、スクリプトの変更内容が反映されるだけです。 ちなみにそのスクリプトをここに添付しますので、何かお気づきの点があれば教えてください。 一桁の整数しか受け入れない関数に、わざと範囲外の値を入れてエラーを発生させ、try-catch の働きを見ようとするものです。 <script language="javascript" type="text/javascript"> function add(a,b){ if ( (a<0 || a>9)&&(b<0 || b>9) ){ throw "neither number is in the 0 -- 9 range.."; } else if(a<0 || a>9){ throw "first number is not 0 -- 9 range.."; } else if(b<0 || b>9){ throw "scond number is not 0 -- 9 range.."; } else{ return a+b; } } function call_add(){ var first=-4; var second=5; try{ document.write("result is "+ add(first,second)+ " --- </br>"); } catch(e){ var msg="JavaScript encountered the following error: \n\n"; if(navigator.userAgent.indexOf("MSIE") != -1){ msg += e.description; } else { msg += e; } alert(msg); } document.write("This line is supposed to be displayed any time.</br>"); } </script> よろしくお願いいたします。 papashiro
お礼
先にあげたスクリプトは、<body onload="call_add();"> として呼んでいたのですが、<body> に <form> を作ってその中のボタンクリックで呼ぶようにしたら、スクリプトの変更内容が反映されるようになりました。 ありがとうございました。 papashiro