プロが教える店舗&オフィスのセキュリティ対策術

リンク先を新しいウィンドウで表示させ、メニューとかステータスバーを非表示にさせるためwindow.openを使用しています。
上記のようにして、子画面を表示することは問題無く出来ているのですが、リンクボタンを押した親画面ドキュメントが、いわゆる「トップに戻る」ボタンを押したときのような動きをしてしまいます。

なんとか親画面側のこの「トップに戻る」動きをやめさせたいのですが、解決法はありますか?

ソースは以下のようにしています。
<script language="javascript">
<!--
function openWin(url){
window.open(url, "newwin", "menubar=no,location=no,status=no");
}
//-->
</script>


<a href="#" onclick='openWin("./test.html")'>テスト表示</a>

A 回答 (3件)

a href="#"


になっているために、TOPに戻っています


<a href="#" onclick='openWin("./test.html")'>テスト表示</a>
の近くに<a name="***">というものを記載し
<a href="#***" onclick='openWin("./test.html")'>テスト表示</a>
にしてはいかがですか?
    • good
    • 0
この回答へのお礼

この方法は私も考えましたが、根本的な解決にはならないなと思ってやめました。(^^;

回答ありがとうございました。

お礼日時:2003/07/10 13:55

#1の方と同じで a href="#" になってるからと思います。



次のように
<a href="javascript:void(0);" onclick='openWin("./test.html")'>テスト表示</a>
#をjavascript:void(0);に置き換えてはどうでしょうか?おそらく直ると思いますよ^^;
    • good
    • 0
この回答へのお礼

こちらでも解決できますね。
a href="javascript:void(0)
と記述できるとは、知りませんでした。

回答ありがとうございました。

お礼日時:2003/07/10 13:53

これは、onClick の処理が実行された後に、A タグ本来のジャンプ動作(ここでは href="#"、つまりページトップへのジャンプ)が行われるのが原因です。



JavaScriptが有効な場合のみ動作すればよいのであれば、
  <a href="javascript:openWin('./test.html')">~</a>
で解決できます。

しかし、普通はJavaScriptが有効でない環境のことも考慮して、A タグを
  <a href="./test.html" target="newwin" onClick="return openWin(this)">~</a>
のようにし、また関数の方を
  function openWin(a) {
    window.open(a.href, a.target, "~");
    return false;
  }
のようにします。
こうすると、JavaScriptが有効でない場合は A タグの動作でページが開き、有効な場合は openWin() の動作でページが開きます。

※1:onClick="~" の中で return を使うと、return の値が「真」の場合はタグの動作が実行され、「偽」の場合はタグの動作がキャンセルされます。
上の例ではこれを利用し、JavaScriptの有無に対応しているのです。

※2:openWin() の呼び出しで引数になっている「this」は、この A タグ自身(を表すオブジェクト)のことです。
これを変数 a で受け取ったので、a.href や a.target で、A タグに書いてある内容を利用することができるのです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
JavaScriptにはまだ慣れていないもので回答を見たときは「?」と思いましたが、なるほど実際やってみると分かってきます。
一応参考書も読んでいたのですが、このような方法は載っていませんでしたよ。さすが専門家の意見ですね。

今回はとても勉強になりました。
どうもありがとうございました。

お礼日時:2003/07/10 13:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!