• ベストアンサー

インラインフレームがときどき表示されない

別窓を開くと、別窓内のインラインフレームが表示されるときとされないときがあります。 プログラムは以下のようにしました。 ・メインファイル <script language="javascript"> <!-- var subWin = null; function disp(nValue){ subWin = window.open("別窓ファイル名",""); subWin.menu.location.href = "2003" + nValue + "menu.html";} //--> </script> <body> <a href="JavaScript:disp('01');"> <img src="img1.jpg"> </a> <a href="JavaScript:disp('10');"> <img src="img10.jpg"> </a> </body> ・別窓のファイル <IFRAME src="" id="menu"> </IFRAME> エラーメッセージは以下のようにでます。 『subWin.menu.locationはNullまたはオブジェクトではありません。』 プログラムに間違いがあればご指摘お願いします。

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

  • ベストアンサー
回答No.2

>処理待ちする方法 setTimeout()を使うのが普通です。 ただ、ご質問の場合は何秒待てば良いのかというのが ローカルの環境で左右され、なかなか難しいと思います。 別窓に月(?)の情報を渡して、 onloadを使えばよろしいのでは・・ ・メインファイル <script> function disp(nValue){ window.open("*****.html?"+nValue,""); } </script> <body> <a href="JavaScript:disp('01');"> <img src="img1.jpg"> </a> <a href="JavaScript:disp('10');"> <img src="img10.jpg"> </a> </body> ・別窓のファイル <script> function x(){ nValue=location.search.substring(1,location.search.length); menu.location.href = "2003" + nValue + "menu.html"; } window.onload=x; </script> <IFRAME src="" id="menu"> </IFRAME> .

fumi-ryu
質問者

お礼

ありがとうございます!! 教えていただいたプログラムでできました!! 処理待ち方法はなんとなくタイマーかな~とは思っていたのですが、どうもタイマーは苦手で。。。 JavaScript初心者なもので、onloadをよく知りませんでした。 しかも、最初はonLoadにしていて、全く動かないやん!と思ったらonloadにしたら動きました!! onloadとonLoadじゃ違うんですね。 そんなことも知らなかったなんて。。。 本当にありがとうございました!!

その他の回答 (2)

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

#1>具体的にプログラムをどのようにすればよいのか #2のように、別窓側で処理できれば、onload が使えるので楽ちんです。コールバックするような感じにしてもいいかも。 別窓側をいじれない時は、やはり待つしかないので 処理待ちする時は、 http://okwave.jp/kotaeru.php3?qid=1918363 みたいな感じでやればイイと思います。 要点は、 if(開いた先のオブジェクトがあるかどうか検査して、無い場合){ setTimeout を利用して、適当な時間を置いてもう一度やってみる } else { setTimeout をクリアして、やるべき処理をする } ってことです。 注意点: ※IEでは、id でオブジェクトに直接アクセスできるが、全てのブラウザではそうではないので、getElementById を使う方がよい。 ※subWin.menu がnull の時、subWin.menu.location は、当然 『subWin.menu.locationはNullまたはオブジェクトではありません。』 になるのでそういう階層に注意。 ※呼び出すURLがあると分かっている時はいいが、あるかないか分からない時は永遠に待つようなことにならないように、試行回数(最大待ち時間?)を決めておくといいかも。

fumi-ryu
質問者

お礼

再度のご回答ありがとうございます!! 処理待ちの方法はなんとなくタイマーかな~とは思っていたのですが、タイマーは苦手でonloadを使うことにしました。 どうもありがとうございました!!

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

(1)subWin = window.open("別窓ファイル名",""); (2)subWin.menu.location.href = "2003" + nValue + "menu.html"; のような場合 (1)でページが開き終わるまえに(2)を実行しようとすると、まだ、当該ウィンドウのオブジェクトが全部できていないので、 『subWin.menu.locationはNullまたはオブジェクトではありません。』 のようなメッセージが出る場合があります。 当該ページの読み込みが完了した後(わかりやすくいえば、onload イベントが発生したあと)に操作する必要があります。 言ってみれば、処理待ちする必要があります。

fumi-ryu
質問者

お礼

ご回答ありがとうございます。 なるほど!!ですね。 おっしゃってる意味はよーくわかります。 だから、エラーがでるときとでないときがあったんですね。 しかし、私には処理待ちする方法がわかりません。 具体的にプログラムをどのようにすればよいのか教えていただけるととてもありがたいのですが。。。

関連するQ&A

  • JavaScriptでリンクを設定したい

    JavaScript超初心者です。 サイトで画像やテキストリンクが1ページにとても多く、 リンクアドレスも同一のものが数か所あります。 JavaScriptでリンクを設定すれば、リンクだらけにならないと聞いたので 使ってみようと思ったのですが、上手くいきません。 http://www.openspc2.org/reibun/javascript/link/020/ こちらのサイトを参考にやってみたのですが、 テキストリンク1カ所はできました。 でも、画像リンクはnullと表示されて画像も表示されなくなり、 2個目のテキストリンクはリンクになりません。 <a href="./aaa.html"><img src="./img/aaa.jpg" /></a> <a href="./aaa.html">あああ</a> <a href="./bbb.html"><img src="./img/bbb.jpg" /></a> <a href="./bbb.html">いいい</a> <a href="./aaa.html"><img src="./img/ccc.jpg" /></a> <a href="./aaa.html">ううう</a> このように表示されているリンクを JavaScriptでリンクを設定するにはどうしたらよいでしょうか? よろしくお願いします!

  • 別窓のインラインフレームの中身を変更する

    javascript初心者です。 HPを作成中ですが、FLASHが全くわからないので、javascriptでアルバムを作っています。 メインページで何月が選択できるようになっており、クリックすると別窓が出ます。 別窓にはインラインフレームでサムネイル表示させ写真を選べるようにしています。 別窓のファイルは1つ(album.html)にし、メインページからインラインフレームの中身(1月.html,2月.html etc...)を変えようとしています。 プログラムはこのようにしました。 subWin = window.open("***"); function ***() { subWin.インラインフレーム名.location.href = ***.html; } 最初、インラインフレームの中身がうまく表示されなくて、プログラムが間違っているのかと思ったのですが、プログラムエラーは出ず、アクティブコントロールがどうのこうのって表示が出たので、試しに『マイコンピュータのファイルでのアクティブコンテンツ実行を許可する』にしてみたところ、ちゃんと表示されました。 しかし、ちょっと不安定なんです。 連続でメインページの月選択を押すと(そんな人はいないでしょうけど)表示されたりされなかったり・・・ javascriptを使うとそんなもんなんですか? それと、自分のPCでは見れてもサーバーにアップして公開しても他の人には見れるか心配です。 素直に別窓をフレーム分割して作る方法もありますが、そうするとファイル数が倍になるので今回javascriptを使いました。 プログラムが間違っているのか、そもそも別窓のインラインフレームを指定することが間違っているのか、不安定の原因をお教えください。

  • noscriptをどうすれば?

    大小の画像を2枚用意して クリックすると大画像が別ウィンドウで表示できるようになりました。 javascripがOFFの時にnoscriptで別窓表示させるようにもしました。 最初はnoscriptを別に置いたのですが、これだとjavascripがOFFの時に最初から小画像が2つ表示されてしまいます・・・ <a href="javascript:void(0)" onclick=" window.open('big.jpg', '_blank', 'width=600,height=600,scrollbars=no,toolbar=no,menubar=no,directories=no,location=no'); "> <img src="mini.jpg" width="300" height="300" alt="画"> </a> <noscript><a href="big.jpg"> <img src="mini.jpg" width="300" height="300" alt="画"></a> "></noscript> そこで、下記のようにしましたが・・・ 動作はできるみたいです。でもnoscriptのHTMLでの位置で何か変な感じです。正しい方法をご教授ください。 <a href="javascript:void(0)" onclick=" window.open('big.jpg', '_blank', 'width=600,height=600,scrollbars=no,toolbar=no,menubar=no,directories=no,location=no'); "> <noscript><a href="big.jpg"></noscript> <img src="mini.jpg" width="300" height="300" alt="画"> </a> これ1枚の画像だけなのでライブラリを使いたくないのです。

  • HTMLアプリでインラインフレーム間リンクの表示

    HTMLアプリケーション(hta)で インラインフレームにリンクボタンを置き、 別のインラインフレームにリンク先を表示する ことができるか教えてください。 ※IE6を使用しています。 HTMLタグを書くと、フレーム内のリンクをクリックすると 別ウィンドウが開いてしまいます。 ただし、フレーム外のリンクであればリンク先の表示ができます。 また、拡張子をhtmに変更すればすべて想定通りの動作をします。 記述に誤り、もしくは良い方法があれば、教えていただけませんでしょうか。 よろしくお願いします。 ------------ aaa.hta <a href="http://www.yahoo.co.jp" target=iframe2>aaa</a> <iframe name="iframe1" src="a_1.htm"></iframe> <iframe name="iframe2" src=#></iframe> a_1.htm <a href="http://www.yahoo.co.jp/" target="iframe2">click!</a> ------------

    • ベストアンサー
    • HTML
  • インラインフレームが消えてしまいました

    行間を空けようと思い、body内に <span style="font-size:17px; line-height:20pt;"> を入れたとたん、インラインフレームが表示されなくなってしまいました。 ??と思い<span style="font-size:17px; line-height:20pt;">を消してみてもインラインフレームが戻ってきません。他にやった操作はないはずなのですが・・・(<br>をいくつか削ったりはしました) インラインフレームのタグもいじっていません。 なにがいけないのか、さっぱり分かりません。inline.htmlもきちんと同じフォルダ内にあります。 私はHTMLもcssもとても初心者なので、凄く簡単なところで見落としがあるのかもしれません。 と思って小一時間ほどソースを見直してみたのですが、原因となるものが分からず、困っています。 「こういう状況下ではインラインは使えない」というものでもあるのでしょうか・・・? 一応ソースを貼っておきます。******は単なる文字列だと思ってください。 <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta content="****" name="keywords"> <meta content="**************" name="description"> <meta name="description" content="******************" /> <meta name="keywords" content="*************************" /> <link rel="stylesheet" href="style.css" media="all" type="text/css"> <title>****************</title> </head> <body><body background="title.gif"> <span style="font-size:17px; line-height:20pt;"> <h1 id="HEADER"><img src="title.jpg" alt="タイトル画像"></h1> <br><br><br> <ul id="NAV"> <li><a href="index.html" title="ホームに戻ります"><img src="home.gif" border=0 alt="ホームに戻ります"></a></li><br><br> <li><a href="main.html" title="********"><img src="bosyu.gif" border=0 alt="********"></a></li><br><br> <li><a href="http://*********.com/" title="******"><img src="blog.gif" border=0 alt="管理人のブログです"></a></li><br><br> <li><a href="douga.html" title="********"><img src="douga.gif" border=0 alt="*****"></a></li><br><br> <li><a href="http://*********/" title="***********"><img src="bbs.gif" border=0 alt="掲示板"></a></li><br><br> <li><a href="link.html" title="お世話になっているサイト様です。ネチケットを守ってお伺いして下さい。"><img src="link.gif" border=0 alt="リンク"></a></li> <br><br> <li><a href="http://******" title="******"><img src="mail.gif" border=0 alt="メールフォーム"></li></a> </li> </ul> <div id="CONTENT"> <center><b> <font color=blue> <br> *****************<br> ****************<br> <font color="green><u>****</u><br> ***********<br> ***********</font><br><br> <iframe src="inline.html" width="50%" height="150" name="koushin">ここはインラインフレームです。表示されない場合はお使いのブラウザが対応しておりませんです。。。</iframe><br><br><br> <h1><font color=red>**********</h1><br> ********<br> ******** <br> <a href=*****.html target="_blank"><br><br> <font size=5>****</font><br></a> ******<br> ****** </font><br> *************<br> *************<br><br> <font color=#00008B><h1>*******</h1> *******************<br> *******************<br><br> *******************<br> *******************<br> *******************<br><br> ************</font> <br> <br> <br> <!-- FC2カウンター ここから --> <center><bottom> <script language="JavaScript" type="text/javascript" src="http://counter1.fc2.com/counter.php?id=3362754"></script><noscript><img src="http://counter1.fc2.com/counter_img.php?id=3362754"><br>undefined</noscript> <!-- FC2カウンター ここまで --> </div> </body></html> どこを見落としていますでしょうか・・・ とてもお手数なのですが、どうぞお力をお貸し下さい。

    • 締切済み
    • CSS
  • onMouseOverで変える位置

    お世話になります。 長文失礼します。 <html> <head> <title>ページのタイトル名</title> <SCRIPT LANGUAGE="JavaScript"> <!-- movimg=new Array() movimg[0] = new Image();movimg[0].src='img/img-01-206.jpg'; movimg[1] = new Image();movimg[1].src='img/img-01-208.jpg'; movimg[2] = new Image();movimg[2].src='img/img-01-213.jpg'; function changImg1(imgNoA,imgNoB) { document.images[imgNoA].src=movimg[imgNoB].src; }; <!----> </SCRIPT> </head> <body> <img src="img/img-01-01.jpg" width="300" height="225">--(1) <img src="img/img-01-208.jpg" width="300" height="225">--(2) <BR> <a href="javascript:function voi(){};voi()" onMouseOver="changImg1(0,0);"> <IMG src="img/img-01-206.jpg" border="0"></a> <a href="javascript:function voi(){};voi()" onMouseOver="changImg1(0,1);"> <img src="img/img-01-208.jpg" border="0"></a> <A href="javascript:function voi(){};voi()" onMouseOver="changImg1(0,2);"> <IMG src="img/img-01-213.jpg" border="0"></A> </body> </html> という風にonMouseOverで画像を変えているようにしているのですが、 この場合(1)の画像がかわりますよね。 これで(2)の画像を変えるようにするにはどうすればいいでしょうか? 参考になるHPなどでも構いませんのでよろしくお願いします。

  • CSSで画像を均等に横並びに配置するには?

    テーブルを使わずに、CSSで画像を自由に配置する方法がわからず困っています。 下記のようなイメージで配置したいです。6列。行は可変。 ■…画像 画像の数に応じて、はみだした画像は自動的に下に改行される感じです。 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ HMTLソースは以下のとおりです。 <ul> <li><a href="*"><img src="img/01.jpg" /></a></li> <li><a href="*"><img src="img/02.jpg" /></a></li> <li><a href="*"><img src="img/03.jpg" /></a></li> <li><a href="*"><img src="img/04.jpg" /></a></li> <li><a href="*"><img src="img/05.jpg" /></a></li> <li><a href="*"><img src="img/06.jpg" /></a></li> <li><a href="*"><img src="img/07.jpg" /></a></li> <li><a href="*"><img src="img/08.jpg" /></a></li> <li><a href="*"><img src="img/09.jpg" /></a></li> <li><a href="*"><img src="img/10.jpg" /></a></li> <li><a href="*"><img src="img/11.jpg" /></a></li> </ul> どのようにCSSを定義すればスマートでしょうか? よろしくお願いします。

  • javaでサムネイルをクリックして別窓で表示したいのですが…

    はじめまして!たつやです。 現在OSはXPでビルダー9を利用して画像アルバムのホームページを作成してますが、サムネイルと元画像はhtmlファイルとして用意し、それぞれのサムネイルをクリックするとタイトルバーなどが無い別画面で表示したいと考えております。別画面はクリックした画像の数だけ開くようにしたいとも考えています。 ヘッド部には <script Language="JavaScript"><!-- function nwin1(){ sub=window.open("jpeg/001.html","subwin1","width=480,height=360,scrollbars=no,location=no,menubar=no,left=10,top=30");} function nwin2(){ sub=window.open("jpeg/002.html","subwin2","width=480,height=360,scrollbars=no,location=no,menubar=no,left=10,top=30");} } // --></script> と記入して、ボディー部には <A href="jpeg/001.html" onclick="nwin1()"><IMG src="jpeg/s001.jpg" width="90" height="68" border="0"></A> <A href="jpeg/002.html" onclick="nwin2()"><IMG src="jpeg/s002.jpg" width="90" height="68" border="0"></A> と記載下のですが、upすると、 auto;blank と出てうまくいきません。 どのように対処すればよいでしょうか? 取り急ぎご回答をお待ちしています。

  • 1つのファイルで画像をクリックしたら差し代わる方法

    表題のようにJavascriptで1つのhtmlファイルで複数の箇所に違う画像があり、それをクリックしたら別の画像に差し代わるということをしたいのですが、中々うまくいかずに困ってしまっています。 下記のようなソースになった場合にそれぞれ別の画像でクリックしたら違う画像に差し替えるには関数等の書き方はどのようにすれば宜しいのでしょうか。 どなたか教えてもらえますでしょうか? Javascript初心者にて失礼しますm(_ _)m 下記に途中までやったソースがあるのですが、行き詰ってしまってます。。。。。 宜しくお願い致します。m(_ _)m m(_ _)m ・・・・・・・・・・・・・ JavaScriptは下記の通りです。 //1つ目の画像に関係するJavaScriptです <script language="JavaScript"> num = 2; nme = "image/index"; exp = "jpg"; cnt = 0; function changeImage() { cnt++; cnt %= num; document.index.src = nme + cnt + "." + exp; } </script> //2つ目の画像に関係するJavaScriptです <script language="JavaScript"> num = 2; nme = "image/img"; exp = "jpg"; cnt = 0; function changeImg() { cnt++; cnt %= num; document.img.src = nme + cnt + "." + exp; } </script> htmlは下記の通りです。 <!--1つ目の画像です--> <a href="JavaScript:changeImage()"> <img src="image/index0.jpg" name="index" border="0"></a> <!--2つ目の画像です--> <a href="JavaScript:changeImg()"> <img src="image/img0.jpg" name="img" border="0"></a>

  • メニュー作成方法を教えて下さい。

    JavaScriptとHTMLを使ってHPを作成しています。onmouseoverとonmouseoutを利用して(トップメニューにマウスを置くとサブメニューが出るという)メニューを作りたいんですが、上手くいきません。 トップメニューにマウスを置くとサブメニューーは出ますが、トップメニューにマウスを置いてもいない時に、サブメニューの画像が×となって出ています。この×が表示されないようにするにはどうすればいいのかわかりません。 どうすればいいのでしょうか。 教えて下さいm(__)m function showMenu(selfObj){ document.menu1.src="bana/albumb.jpg"; document.menu2.src="bana/mib.jpg"; document.menu3.src="bana/picb.jpg"; if(selfObj==0){ document.menu0.src="bana/prr.jpg"; } if(selfObj==1){ document.menu1.src="bana/albumr.jpg"; } if(selfObj==2){ document.menu2.src="bana/mir.jpg"; } if(selfObj==3){ document.menu3.src="bana/picr.jpg"; } } function hideMenu(){ document.menu0.src="bana/prb.jpg"; document.menu1.src=""; document.menu2.src=""; document.menu3.src=""; } <a href="4.html" onMouseout="hideMenu();" onMouseover="showMenu(0);" class="navi0"> <img src="bana/prb.jpg" alt="自己紹介" name="menu0" id="menu0" border color=""> </a><br /> <a href="5.html" onMouseout="hideMenu();" onMouseover="showMenu(1);" class="navi1"> <img src="" alt="アルバム" name="menu1" id="menu1" border color=""></a><br /> <a href="6.html" onMouseout="hideMenu();" onmouseover="showMenu(2);" class="navi2"> <img src="" alt="ミッキー" name="menu2" id="menu2" border color=""> </a><br /> <a href="7.html" onmouseout="hideMenu();" onmouseover="showMenu(3);" class="navi3"> <img src="" alt="写真" name="menu3" id="menu3" border color=""> </a>

    • ベストアンサー
    • HTML

専門家に質問してみよう