条件付きのウインドウ操作

このQ&Aのポイント
  • JavaScriptを使用して、ウィンドウを操作する方法について質問があります。
  • 質問者は、複数のHTMLファイルを用意し、リンクをクリックすると新しいウィンドウが開くようにしたいと考えています。
  • 特定の条件で新しいウィンドウを開くか、既存のウィンドウを前面に表示するかを切り替えたいという要望です。
回答を見る
  • ベストアンサー

条件付きのウインドウ操作

いくつかのHTMLファイルを用意しています。階層は次の通りです。 index.html ├sub1.html全てお互いにリンクしています。 ├sub2.html ├sub3.html  ・  ・ index.htmlからsub.htmlにジャンプする場合は常にwindow1という名前の新しいウインドウを開くようにしています。subは全てwindow1で表示させる。このコードは理解できましたが…こんな感じ function winopen(file){ window.open(file,'window1');} <body>内 <a href="javascript:winopen('sub1.html','window1');"></a> そこで質問です。 sub.htmlからindex.htmlに移動する際、index.htmlが閉じられている場合だけ、新しくウインドウを開きたい。(window1に上書きしたくない)index.htmlが開いている場合はindex.htmlを前面に出したいのですが…頭が混乱してうまいコードを考え付きません。 よろしかったらアドバイスお願いします。

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

  • ベストアンサー
noname#199778
noname#199778
回答No.1

直接スクリプトを書いてしまいますが、sub.html内に以下のようなスクリプトを入れてみてはいかがでしょうか。 <script language="JavaScript"> <!-- function winback(){ if(opener.closed){ window.open("index.html","_blank","toolbar=1, menubar=1, scrollbars=1, directries=1, location=1, status=1, resizable=1") } else{opener.focus();} } //--> </script> これで上手くいくのではないかと思います。 呼び出し側は、 <a href="javascript:winback()"></a> などとすれば良いでしょう。 なお、蛇足ですが、質問文の <a href="javascript:winopen('sub1.html','window1');"></a> この部分において、winopen()には引数が一つしか設定されていないので、第二引数は不要かと思います。 <a href="javascript:winopen('sub1.html');"></a> これでも充分に動くと思いますよ。 参考になれば幸いです。

jamslot
質問者

お礼

大変遅くなりまして申し訳ございません。 ご回答ありがとうございました。 ソースの方もご丁寧に記述して頂きまして、助かりました!HPの方に反映できそうです。

関連するQ&A

  • フレーム内から開いたサブウィンドウから親ウィンドウの別フレームの操作を行いたい

    メニュー、メインの2つのフレーム分けしてあるページで、メインページからサブウィンドウを開きます。 その後、以下の2アクションを同時に行いたいのです。 (1)サブウィンドウから親ウィンドウ(メイン)をジャンプさせる (main.html→main2.cgi) (2)親ウィンドウ(メニュー)の画像をAからBに変更させる 現在window.openerでメインページの変更はできているのですが、 メニューページの画像のを変更がうまくできません。 方法としては (1)サブから親ウィンドウ(画像=A)を閉じさせて、再び親ウィンドウ(画像=B)を フレームセットごとムリヤリ開き直す。 (2)何らかの形でメニューページの情報を保存しておき、Onloadでサブからのジャンプ時に変更させる (3)サブから親ウィンドウのフレーム越し操作を行なって、メニューページの画像を変更する。 どの方法が可能でしょうか、もっといい方法がありますか。 お知恵拝借させてください。よろしくお願いします。 以下、かなり省略したソース説明です。 【フレームセット→cgi。記述は省略】 <frameset>  <frame src="menu.html" name="menu">  <frame src="main.html" name="main"> </frameset> 【メニュー→html】 <img src="A"> 【メイン→html】 function open_sub(url) { /**/ w = window.open(url, 'sub') } <!--本文--> <a href="javascript:open_sub('sub.html')">サブウィンドウ</a> 【サブ→html】 function change_main() { window.opener.location.href="main2.cgi?sub"; window.opener.focus(); } <!--本文--> <A HREF="JavaScript:change_main()">メインを変更</A>

  • window.openで同画面遷移しない

    window.openで別窓でウィンドウを開き、開いたウィンドウは親ウィンドウにあるリンク1、リンク2、リンク3をクリックすると別窓で開いたウィンドウが同画面遷移で変わるようにしたいのですが、IEで各リンクをクリックすると新規ウィンドウが立ち上がってしまいます。Firefoxでは問題ないのですが。 <head>~</head>内に以下のjavascriptを書きました。 <script type="text/javascript"> <!-- function winOPEN(URL,winName) { window.open(URL, 'window1', 'width=400, height=300, menubar=no, toolbar=no, scrollbars=yes'); } // --> </script> またリンクのhtmlは以下のようにしました。 <ul> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク1</a></li> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク2</a></li> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク3</a></li> </ul> どこがいけないのでしょうか。教えてください。

  • 別のウインドウを出す

    HTMLにて、Aというファイル内でリンク指定したジャンプ先をB、更にBというファイル内でリンク指定したジャンプ先をCとしたとき、それぞれJavascriptのopen_windowを使って、それぞれ別のページをウインドウの大きさを変えて表示させるようにしたいのですが、A→Bはうまくいくのですが、B→Cをすると、BのページがCに変わる(同一ウインドウでジャンプされる)だけで、Cを表示したいウインドウが新規に出てきません。 因みに、 <a href="javascript:open_window('ファイル名',form,width=200,height=200,left=0,top=0,resizable=yes,scrollbars=yes)">ジャンプ先</a> としています。 どこを修正すればいいか解らないので教えて下さい。よろしくお願いします。

  • 子ウィンドウでウィンドウサイズ固定にしてtarget=

    HPを作っていて親ウィンドウに↓のように <script language="JavaScript"> <!-- function winopen(url){ win=window.open(url,"host","scrollbars=1,width=780,height=480"); } //--> </script> ~略~ <a href="dougu/keito.html" target="_blank" onClick="Javascript:winopen('dougu/keito.html');return false;"><img src="img/item-keito10.gif" width="50" height="38" border="0"> ウィンドウサイズを固定してtarget="_blank"で開いてさらにその子ウィンドウでも同じようにリンクを張って <script language="JavaScript"> <!-- function winopen(url){ win=window.open(url,"host","scrollbars=1,width=780,height=480"); } //--> </script> ~略~ <a href="../wash.html" target="_blank" class="style1" onClick="Javascript:winopen('../wash.html');return false;">こちら</a> とtarget="_blank"でウィンドウサイズを固定しして開きたいのですが同じウィンドウで開いてしまいます。 説明の仕方が分かりづらくてすみません。分からないようでしたら補足いたします。

  • ウィンドウのリサイズ?

    HPを作成しています。 まず親ウィンドウからサイズ固定の子ウィンドウを別ウィンドウで開きます。そして、子は開いたまま親の別のリンクをクリックして最初に開いていた子のサイズを別の大きさに変えてさらにサイズも最初と違った大きさに固定した状態で開くのは可能なのでしょうか。 <script language="JavaScript"> <!-- function winopen(url){ win=window.open(url,"host","scrollbars=1,width=780,height=480");win.window.focus() } //--> </script> ~略~ <a href="dougu/dougu_5bou.html" target="_blank" onClick="Javascript:winopen('dougu/dougu_5bou.html');return false;"> と現在はwinopenをwinopen2、winopen3にしたり hostをhost2にしたりしてウィンドウの開き方をコントロールしています。なので小さいサイズの子ウィンドウを開いたまま同じhost名のリンクをクリックすると大きいサイズにしたいのに 小さいサイズのまま開いてしまいます。 分かりづらかったらすみません。補足します。

  • java scriptで新しいウィンドゥを開く

    クリックすると、アドレスバー等がない新しいウィンドゥで開く…という風にしたいのですが、うまく行きません。 以下のようにやってみたのですが、何処が間違っているのでしょうか? <script language="JavaScript"> <!-- function winopen(url){ win=window.open(url,"host","scrollbars=1,width=717,height=700"); } //--> </script><FONT size="+1"><B><A href="ブログのアドレス" target="_blank" onclick="Javascript:winopen('ブログのアドレス');return false;">ここをクリック</A></B></FONT>

    • ベストアンサー
    • HTML
  • JavaScriptで新しいウインドウを立ち上げたときにメインウインドウがおかしい

    メインウインドウの文章中の下の方にリンクをはって、そこからサブウインドウを開いています。実は少し前にatsuotaさんにご回答いただいたこの方法を利用しているのですが <!-- function openWin1() { window.open("sub1.html","sub1","width=320,height=240"); } function openWin2() { window.open("sub2.html","sub2","width=320,height=240"); } --> <a href="" onClick="openWin1()">sample1</a> <a href="" onClick="openWin2()">sample2</a> このsample1とか2がスクロールしなくてもよいくらいの位置にあればいいのですが、スクロールしているところで配置してあると、メインウインドウが毎回トップのあたりにずれてしまうのです。(特別な制御はしていないはずなのですが・・・) おわかりになる方がいらっしゃいましたら教えてください。

  • リモコンウインドウからの親ウインドウ操作

    親ウインドウからリモコンウインドウを開き、リモコンウインドウのリンク先を親ウインドウに表示しようとしています。 親ウインドウは2つのインラインフレームが存在し、そのインラインフレーム内にリモコンウインドウを開くためのリンクがあります。 そのインラインフレームには以下の記述をしてリモコンを表示させています。 function navi_win() { self.window.name="main" w = window.open('', 'Remocon', 'width=150,height=300,scrollbars=yes'); if (w != null) { if (w.opener == null) {w.opener = self;} w.location.href = 'remocon.html'; } } <a href="javascript:navi_win()">リモコン</a> これにより開いたリモコンでは以下の記述により親ウインドウに表示させようとしています。 function ctrl_wind(url) { opener.location.href = url; } <a href="javascript:ctrl_wind('hoge.htm')">hoge</a> この場合、hoge.htmlはインラインフレーム内に表示されてしまい、親ウインドウ全面にて表示はできませんでした。 この場合、どのように記述するのが良いでしょうか。

  • 親ウィンドウの別フレームを子ウィンドウから操作したい

    いろいろ試しているのですが、理解不足のせいでしょうが、どうやってもできません! 内容は以下の通り(分からないのは3)です。どうぞ宜しくお願いいたします。 1:画面を、AとBの2つのフレームに分割しています。 【index.html】 <frameset>  <frame src="A.html" name="A">  <frame src="B.html" name="B"> </frameset> 2:Aフレーム内に記述してあるaaaアンカーをクリックすると、子画面ko.htmlを開きます。 <a href="javascript:void(0)" onclick="window.open('path=ko.html','_blank');">子画面</a> 3:ko.htmlではbbbというアンカーがあって、それをクリックすると、"親画面のBフレームにbbbで指定したリンク内容を表示したい"のです。 <a href="javascript:void(0)" onclick="opener.window.location=('B?path=/home/~/~/ZZZ.html');">開きたいファイルZZZ.html</a> と書くと、openerはAだからAにZZZ.htmlの内容が表示されてしまうので、(全くおかしな記述をしているのかもしれませんが・・・(- -;))あちこち調べながら、 B.opener.window.locationとか、 B.opener.window.location.hrefとか、 parent.B.window.locationとか、 parent.frames[1].window.locationとか、 ほかにもいろいろやってみたのですが、出来ませんでした・・・。 このような別フレームの操作が出来る方法があれば教えてください。 宜しくお願いいたします。

  • 子ウィンドウの操作

    処理概要:親ウィンドウからボタンクリック時にjavascriptのみで      子ウィンドウを作成し、遷移させた後、子ウィンドウの      フォームをサブミットする。 -------以下ソース-------- var url = "/index.html"; hWin=window.open("",""); window.hWin.location.href=url; setTimeout(a,10000); function a(){ window.hWin.document.form.submit(); // window.hWin.document.form.name.value = "住友"; // window.hWin.document.form.button1.click(); }  * index.html にはformというフォームがあり、nameという   テキストボックスとbutton1 というボタンをフォーム内に   持っているとします。 以上のような簡単なものですが、7行目のsubmitでこけます。 window.hWin.document.formがないようでヌルポになります。 親から子ウィンドウのサブミットをjavascriptだけで制御 できないでしょうか。 また、できればコメントアウトしているところ、 DOM要素を指定して値をテキストボックスに入れたり フォームをボタンによりクリックしてサブミットもしたいです。 ちなみに、setTimeout を利用しているのは、遷移が終わり、子ウィンドウの要素が確実に作成されている状態にするためです。 また、遷移先にSSLを設定している部分と設定していない部分があり、javascriptの途中で"ここに遷移していいですか?"みたいなダイアログが表示されます。"混雑しているページの処理"をインターネットオプションから"有効"にする(ダイアログを表示するではなく)と表示されないのですが、奨励されないので 他にいい方法はないでしょうか。

専門家に質問してみよう