JavaScriptの実際に動作するコードを提示していただきたいです。


A.htmlからB.htmlを<a target=”_blank”>で開きます。その後、B.html中の<a onClick=””>で、A.htmlを開いていたウィンドウにC.htmlを表示させ、C.htmlのウィンドウにフォーカスしたいのです。このとき、A.htmlを開いていたウィンドウが既に閉じられていたら、target=”_blank”でC.htmlを表示します。

実際に動作するコードを一番最初提示してくださった方に100ポイント差し上げます。
それ以外の方にももちろん相応のポイントを差し上げます。

よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:kacchan6 No.1

回答回数106ベストアンサー獲得回数0

ポイント30pt

以下の3つのファイルで試してみてください。

私が勘違いしてなければ以下でOKかと思います。

a.html

<html>

<head>

</head>

<body>

<a target=”_blank” href=”b.html”>test</a>

</body>

</html>

b.html

<html>

<head>

<script language=”JavaScript”>

function win_open(){

if(!window.opener.closed){

window.opener.location.href = ”c.html”

}else{

window.opener = window.open(”c.html”)

}

}

</script>

</head>

<body>

<a href=”#” onclick=”win_open()”>c.html</a>

</body>

</html>

c.html

<html>

<head>

</head>

<body>

hello

</body>

</html>

id:degs

ありがとうございます。ざっと見てみました。

focus()がないようですが・・・。

2004/06/16 19:23:59
id:andymente No.2

回答回数96ベストアンサー獲得回数0

ポイント30pt

B.html の内容です。

<script type="text/javascript">

<!--

function opener_check(url){

if (window.opener) {

window.onerror=function(){return(true);}

window.opener.location.href=url;

window.opener.focus();

window.onerror=function(){return(false);}

return(false);

} else {

return(true);

}

}

//-->

</script>

<p><a href="./C.html" onclick="return(opener_check(this.href));" target="_blank">C</a></p>

ブラウザによってはうまく動かないかもしれません。

id:degs

ありがとうございます。

> ブラウザによってはうまく動かないかもしれません。

程度によってはそれでは困ってしまいます。メジャーなプラットフォームのメジャーなブラウザをカバーしていれば結構です。

2004/06/16 19:27:04
id:kacchan6 No.3

回答回数106ベストアンサー獲得回数0

ポイント100pt

フォーカス忘れてました。

以下の関数と差し替えてください。

function win_open(){

if(!window.opener.closed){

window.opener.location.href = ”c.html”;

}else{

window.opener = window.open(”c.html”);

}

window.opener.focus();

}

id:degs

ありがとうございます。

実際に試してみたところ動作しました。

質問を終了したいと思います。

2004/06/16 19:40:23
  • id:andymente
    補足

    いわしでの補足失礼します。
    ・JavaScript がオフの場合、もしくはエラーになった場合、あるいは対応していない場合でも C.html に飛べるように
    ・window.opener.closed を使うと、B.html をブックマークなどから直接開いた場合、エラーが出て飛べなくなってしまうので、別の方法を使用
    この二点を踏まえて、先程のような回答を送信しました。
    ブラウザによってはうまく動作しないというのは、Mozilla だと必ず _blank で開いてしまうというだけの話です。
    kacchan6 さんの回答だと Mozilla などでエラーが出て C.html に飛べませんね。
    IE や Opera あたりのブラウザ限定で、JavaScript が必ず有効になっている環境で、かつ A.html から飛んできた場合のみに限定して C.html を表示させたいという場合は、それもまたありなのかもしれませんが。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません