• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IE6のブラウザでページでエラーが発生しましたとjavascriptのエラーがでます。)

IE6のブラウザでページでエラーが発生しましたとjavascriptのエラーがでます

このQ&Aのポイント
  • IE6のブラウザでページでエラーが発生し、javascriptのエラーが表示される問題が発生しています。
  • エラーは最初にブックマークからページに入った場合には表示されず、他のページから戻ってきた場合にのみ発生します。
  • このエラーは他のブラウザでは問題ないが、IE6では発生する可能性があります。解決方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

返事が遅くなってすみません。 一応なぜエラーになるかはわかりました。 多分、ページの読み込みが完了していない時期にイベントが起こると、未定義の変数にアクセスすることになってエラーになるということだと思います。 これを回避する方法は色々あると思いますが、 例えば var LOADED = false; window.onload=function(){ LOADED=true;//読み込みが完了したらフラグ設定 } //menu methods function ehandler(event,theobj){ if(LOADED){//読み込みが完了している時だけ動作する for (var i=1; i<= theobj.numberofmenuitems; i++){ var shutdiv =eval( "menuitem"+i+".thediv"); shutdiv.style.visibility="hidden"; } theobj.thediv.style.visibility="visible"; } } function closesubnav(event){ if(LOADED){//読み込みが完了している時だけ動作する if ((event.clientY <48)||(event.clientY > 107)){ for (var i=1; i<= numofitems; i++){ var shutdiv =eval('menuitem'+i+'.thediv'); shutdiv.style.visibility='hidden'; } } } } とかすればいいと思います。

noname#30387
質問者

お礼

ご丁寧にありがとうございます。早速教えていただいた方法でやってみます。本当ににありがとうございます。 一応、一番最後に書いてある以下の部分をちょっと上のHTMLに書いてあげたらエラー回数は減りましたが、不規則に時々エラーが出ました。 <script type="text/javascript"> <!-- var menuitem1 = new menu(8,1,"hidden"); var menuitem2 = new menu(8,2,"hidden"); var menuitem3 = new menu(8,3,"hidden"); var menuitem4 = new menu(8,4,"hidden"); var menuitem5 = new menu(8,5,"hidden"); var menuitem6 = new menu(8,6,"hidden"); var menuitem7 = new menu(8,7,"hidden"); var menuitem8 = new menu(8,8,"hidden"); // --> </script>

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>一番最後に書いてある以下の部分を この部分も本来は、window.onloadの部分で実行すべき部分ですね。 最後に書いてあるので、読み込みが終了する時ぐらいに実行されるというような動作になります。 もし、window.onloadに含めるなら var menuitem1; var menuitem2; var menuitem3; var menuitem4; var menuitem5; var menuitem6; var menuitem7; var menuitem8; window.onload=function(){ menuitem1 = new menu(8,1,"hidden"); menuitem2 = new menu(8,2,"hidden"); menuitem3 = new menu(8,3,"hidden"); menuitem4 = new menu(8,4,"hidden"); menuitem5 = new menu(8,5,"hidden"); menuitem6 = new menu(8,6,"hidden"); menuitem7 = new menu(8,7,"hidden"); menuitem8 = new menu(8,8,"hidden"); LOADED=true;//読み込みが完了したらフラグ設定 } のようにすればいいと思います。この場合、もとの部分は削除します。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>エラー:'menuitem'は宣言されていません の意味自体は、menuitemという変数にアクセスできないという意味です。 でも、該当の行 var shutdiv =eval('menuitem'+i+'.thediv'); では、+iされて、 menuitem1がないとかmenuitem1.thedivが無いとかのエラーになるべきで、 該当のエラーメッセージがでる理由がイマイチわかりませんです。 また、ページに戻ってきた時にエラーになるということで、 なんらかのイベントで、closesubnav( )が呼び出されるということなんでしょうけど、#1の補足のソースでは、closesubnavを呼び出している部分がありません。 呼び出されるタイミングが悪いということも考えられます。 いずれにしても、この部分だけでは、ちょっと判断できないので さらに追加のソースをアップしていただくか できたら、サイトのアドレスを教えていだだけませんか

noname#30387
質問者

補足

サイトのHPアドレスはhttp://www7a.biglobe.ne.jp/~lex/aqua/index.htmlです。最初は、このアドレスのページだけでエラーが出ているのだと思っていましたが、時々他のページでもエラーが出ます。なぜだかよく分かりませんが、出ないときもあります。全ページはサーバーにアップしていませんが、例えば、1番したの左にあるプライバシーポリシーに1回行き、ホームに戻ってくるとエラーが出ます。そこから他のページに行っても、時々エラーが出ます;忙しいかとは思いますが、宜しくお願いいたします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

メニューのツール~インターネットオプションで スクリプトエラー毎に通知するにチェックを付けて デバッグを使用しないにチェックが付いていたらはずして見て下さい。 エラーがでる毎に、デバッグしますか? というようなメッセージがでますので、 デバッグする~スクリプトを選んで見て下さい。 するとエラーが有る行に→がついて表示されるはずなので、 その行を含めたスクリプトの固まりを補足で挙げて下さい。 そして、この行でエラーというようなコメントを付けて下さい。

noname#30387
質問者

補足

<script type="text/javascript"> <!-- var time = 3000; var numofitems = 8; //menu constructor function menu(allitems,thisitem,startstate){ callname= "gl"+thisitem; divname="subglobal"+thisitem; this.numberofmenuitems = 8; this.caller = document.getElementById(callname); this.thediv = document.getElementById(divname); this.thediv.style.visibility = startstate; } //menu methods function ehandler(event,theobj){ for (var i=1; i<= theobj.numberofmenuitems; i++){ var shutdiv =eval( "menuitem"+i+".thediv"); shutdiv.style.visibility="hidden"; } theobj.thediv.style.visibility="visible"; } function closesubnav(event){ if ((event.clientY <48)||(event.clientY > 107)){ for (var i=1; i<= numofitems; i++){ var shutdiv =eval('menuitem'+i+'.thediv'); ←この行でエラー shutdiv.style.visibility='hidden'; } } } // --> </script> エラー内容は文字:7 エラー:'menuitem'は宣言されていません。 コード:0   です。 htmlが <div id="globalLink"> <a href="index.html" id="gl1" class="glink" onmouseover="ehandler(event,menuitem1);">ホーム</a> <a href="AAA.html" id="gl2" class="glink" onmouseover="ehandler(event,menuitem2);">aaa</a> <a href="BBB.html" id="gl3" class="glink" onmouseover="ehandler(event,menuitem3);">bbb</a> <a href="CCC.html" id="gl4" class="glink" onmouseover="ehandler(event,menuitem4);">ccc</a> <a href="DDD.html" id="gl5" class="glink" onmouseover="ehandler(event,menuitem5);">ddd</a> <a href="EEE.html" id="gl6" class="glink" onmouseover="ehandler(event,menuitem6);">eee</a> <a href="FFF.html" id="gl7" class="glink" onmouseover="ehandler(event,menuitem7);">fff</a> <a href="GGG" id="gl8" class="glink" onmouseover="ehandler(event,menuitem8);">ggg</a> </div> でエラー内容は 文字:1 エラー:'menuitem'は宣言されていません。 コード:0   と表示されます。 これでよかったのでしょうか?よく分からなかったもので、回答するのみ時間がかかり申し訳ありませんでした。宜しくお願いいたします。

関連するQ&A

専門家に質問してみよう