• ベストアンサー

一つのボタンで2つの性格を持たせる

こういうことを考えています。 できましたら、ぜひご教授ください。 a.htmlからwindow.openで、b.htmlを開きます。 b.htmlにボタン(もしくはアイコン)を設置して、そのボタン(アイコン)をクリックした時、次のようにしたいのです。 1)a.htmlが表示されている場合(最小化を含む)、b.htmlは閉じる 2)a.htmlが表示されていない場合(つまり、閉じられてしまったら)、a.htmlを別窓で表示し、b.html自身は閉じる その2つのことを一つのボタン(アイコン)でやらせたいのですが、クロスブラウザでできますでしょうか? ぜひぜひご教授いただけますよう、お願いします

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

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

#4>今までの条件を網羅しつつa.htmlがメインページとして開かせるのはどんなやり方が考えられるのでしょうか? 単独で開かれた場合も、b.htmlを閉じてa.htmlを開くのを付加する。 こんな感じでいいんじゃないかと思います。 <script type="text/javascript"><!-- var srcWin; window.onload=function(){ srcWin=window.opener; }; function closeMe(){ if(srcWin!=null){ if(srcWin.closed){ window.open("a.html"); } window.close(); } else { location.replace("a.html");//問題アリ?、サイズをかえないとだめかも? } } //--> </script>

nsi2xpz
質問者

お礼

何度も何度もありがとうございました。 これで出来そうです。 ありがとうございました。

その他の回答 (4)

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

#3>この場合って、最初からb.htmlにアクセスしてしまった場合には反応が無い(エラーが来る)ということですよね? そうです、「b.html は、a.html からwindow.open で開かれている」ということが前提となっています。 それは、質問文でも前提となっていると思うのですが、問題アリでしょうか? null になることが問題なら if(srcWin!=null && srcWin.closed){ とかすればいいかもしれません。 ちなみに IEの場合、(このような場合)ウインドウをスクリプトから閉じようとすると、選択ダイアログがでます。 Firefox の場合、window.open で開かれたウインドウでないウィンドウをスクリプトから閉じようとすると、エラーになって閉じることができません。

nsi2xpz
質問者

お礼

ありがとうございます。希望としては完璧!な状態です。 ところで…以下は忙しかったり付き合いきれなかったら、黙殺していただいて結構なんですが… 実は考えていたのが、a.htmlがメインページで、b.htmlが子ページ(具体には小窓のちょっとした解説とかを載せるページ)を考えていたので、質問の内容のようになったのですが、この場合、例えば検索エンジンとかでb.htmlがひっかかってしまい、直接アクセスされた方の場合、ボタンをクリックすると閉じてしまいますよね? b.htmlを検索エンジンにかからないようにする以外に、今までの条件を網羅しつつa.htmlがメインページとして開かせるのはどんなやり方が考えられるのでしょうか? ほんと、質問の趣旨とずれてきていますので、黙殺されても結構ですが、ダメ元で質問させていただきます。

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

#2></Script>はどこで閉じたら良いのでしょうか… すみません、再掲します <script type="text/javascript"><!-- var srcWin; window.onload=function(){ srcWin=window.opener; }; function closeMe(){ if(srcWin.closed){//Firefox で閉じてる時にwindow.opener が無いため別変数に保存 window.open("a.html"); } window.close(); } //--> </script>

nsi2xpz
質問者

お礼

ありがとうございます。 この場合って、最初からb.htmlにアクセスしてしまった場合には反応が無い(エラーが来る)ということですよね?

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

#1>window.open("wopen.html"); は、 window.open("a.html"); です。(ウチで試したコードをそのまま載せてしまいましたorz)

nsi2xpz
質問者

お礼

ありがとうございます。早速やってみたいと思います。 </Script>はどこで閉じたら良いのでしょうか…

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

IE とFirefox でしか試してませんけど・ ---------------------------------------------------------------- <script type="text/javascript"><!-- var srcWin; window.onload=function(){ srcWin=window.opener; }; function closeMe(){ if(srcWin.closed){ window.open("wopen.html"); } window.close(); } … <button type="button" onclick="closeMe()">閉じる</button>

関連するQ&A

  • フォームボタンで前ページを呼び出したい

    こんばんは。 フォームで作成した『戻る』ボタンがあります。 このボタンを押すと履歴で前のページ(A.htm)に戻るのではなく、(A.htm)を更新して呼び出す感じにしたいのです。 window.openだと、新しい窓が出てしまうのでそれを辞めて同じ窓でやりたいのです。どうぞ教えて下さい。

  • function jumpを利用した時の戻るボタン

    htmlでフレームを上下分割し、上フレームをさらに左右分割して左上フレームをframe1、右上フレームをframe2、下フレームををframe3として <script type="text/javascript"> <!-- to hide script contents from old browsers function jump(a1, a2) { window.open(a1,"frame1"); window.open(a2,"frame3"); } // end hiding contents from old browsers --> </script> と言うjavascriptを書いて、 <a href="javascript:jump('a.html', 'b.html')">リンク</a> のように呼び出し、二つのフレームを一つのリンクで変えられるようにしたのですが、これを使うとブラウザの戻るボタンを利用すると1つのフレームしか戻らず、2回戻るボタンを使わないと元の表示に戻れません。 戻るボタンを1回押すだけで戻るようにするか、ページに戻るボタンを作り、一度クリックすると2ページ戻ると言うようにしたいのですが、どうすればできますか? 教えてください。

  • 子同士で窓操作

    親窓から2つの子窓ABを開き、子窓Aから子窓Bを操作したいです。 子窓Aはポータルサイトへのリンクがあり、 それをクリックするとBに表示される仕組みのものを作りたいです。 window.open()でABの窓を名前付きで開くまではできたのですが、 リンクをクリックしてもエラーになってしまいます。 親ならwindow.opener.location.hrefでできると思いますが、子同士だとどのように書けばいいのかわかりません。 ご存知の方いましたらアドバイスお願いします。

  • window.open()の複数の使用

    勉強途中で説明も下手で申し訳ございません。 window.open()を使ってリンクバーやメニューバー等、一番上の閉じるボタン以外を非表示にしてサブウィンドウを一つ作る事はできたのですが、 例えば次の行のアイコンや文字などをクリックした際に 別のサブウィンドウを表示されるのをどうしたらよいのかがわかりません。 例えばAのアイコン(又は文字)をクリックしたらa.htmlのサブウィンドウを表示。 次の行のBのアイコン(又は文字)をクリックしたらb.htmlのサブウィンドウを表示させる(いずれもメニューバーやリンクバー等がないもの)をそれぞれに表示させて行くのにはどんな風に区別した記述をすれば良いのでしょうか。

  • ボタンをクリックして、リンクを開きたい

    ボタンをクリックして、リンクを開きたいのですが <input type="button" value="yahooを表示する" onClick="location=http://www.yahoo.co.jp/"> をしても何も起りません。 出来れば、新しいブラウザで開きたくて、 <A href="http://www.yahoo.co.jp/" target="HOGE">yahooを表示する</a> と同じように、ボタンをクリックして開きたいので、ご教授お願いします。

    • ベストアンサー
    • HTML
  • ボタンの表示がおかしいです。

    OSはウィンドウズ98を使用していますが、 最近、ボタンの表示がおかしくて困っています。 対処法を知っている方がいれば、教えてください。 ウィンドウやブラウザなどの右上に表示されるはずの 「閉じる」「最大化」「最小化」ボタンの3つと、 チェックボックスがうまく表示されないのです。 あと、一部アイコンも・・・。 これは、設定で直るものでしょうか?

  • ボタンの動作について

    現状、Flashに全くついて行けません。ついて行けないなりに挑戦中です。 一枚の画像の上に、ボタンを設置していろんな動作をさせたいと思っています。そこで、 □□□  ABC □□□  DEF □□□  GHI 一枚の画像を分割(便宜上ABC、、、とします)した上にそれぞれボタンが設置してありマウスが通過したり、クリックしたときに反応させる(アップの時は透明、オーバー、ダウンで色が変わる)ことまではできたのですが、 たとえば、Aをクリックするとそのままの状態を維持(押し下げたままの状態)して、BをクリックするとAは元に戻ってBが押し下げたままの状態になるようにするにはどうすればいいのでしょうか。 こんな場合はボタン以外がいいよというようなアドバイスでも結構ですので、よろしくお願いします。

    • ベストアンサー
    • Flash
  • ジャバスクリプトで質問です

    2つご教授ください。 1)a.htmlからwindow.open.でb.htmlを別窓で開きます。そのb.htmlを常に手前に表示すべく、b.htmlの中に「setInterval("window.focus()",2000) 」を書き込んでいます。 それを、ラジオボックスか何かで、この常に手前に表示するかしないかを選べるようにしたいのです。具体には、最初開いた時はチェックがあり、定期的にフォーカスを移し、チェックをはずすと、フォーカスをはずす…というふうに。ですが、やり方が皆目検討がつきません。どのようにしたらよいでしょうか。 2)1)の話と連動するのですが、b.htmlからa.htmlを操作したいのですが、a.htmlにフレーム名を認識させるやり方があったと思うのですが、思い出せません。 ぜひご教授くださいますよう、お願いします。

  • submitを押すとリンク先へ移動の他にもう一つ窓を…

    お世話になります。 ページAにformがあり、いろいろ入力してsubmitボタンを押すとphpに値が渡り、結果ページBを表示する。というページがあるとします。 本当ならページBを表示したときに、ポップアップウィンドウでページCを表示したいのですが、Bページにjavascriptのwindow.openでページCが開くように設定したところ、ブラウザの設定で、ポップアップがブロックされてしまう場合があるようです。 必ずページCを表示させたいので、ページAのsubmitを押すとページBを表示し、さらに別窓でページCが確実に開く仕組みはあるでしょうか? 宜しくお願いします。

  • 画面のボタンをクリックしたとき・・・・・

    画面のボタンをクリックしたとき、別窓で、指定した画面が開くようにしたのですが、その中身をスクロールで見せられるようにするには、どんなロジックをPGMに入れればいいのでしょうか? 今は、下記のロジックが入っています。 <!-- function OpenWindow() { subWin = window.open("sub01.html","sub01","width=570,height=370"); } // --> </SCRIPT> よろしくお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう