• ベストアンサー

一つのボタンで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

専門家に質問してみよう