• ベストアンサー

window.openした時、親ウィンドウのドキュメントがトップに戻る

リンク先を新しいウィンドウで表示させ、メニューとかステータスバーを非表示にさせるため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>

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

これは、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 タグに書いてある内容を利用することができるのです。

sisyou
質問者

お礼

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

その他の回答 (2)

  • howsike
  • ベストアンサー率58% (18/31)
回答No.2

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

sisyou
質問者

お礼

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

  • shy00
  • ベストアンサー率34% (2081/5977)
回答No.1

a href="#" になっているために、TOPに戻っています <a href="#" onclick='openWin("./test.html")'>テスト表示</a> の近くに<a name="***">というものを記載し <a href="#***" onclick='openWin("./test.html")'>テスト表示</a> にしてはいかがですか?

sisyou
質問者

お礼

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

関連するQ&A

  • window.openについて。

    初歩的な質問で申し訳ありません。 ★<script> function openWin(filename){ newWin = window.open(winname + ".html", "", "width=300, height=200, location=no, menubar=no, toolbar=no,resizable=yes"); } </script> ★<a href="JavaScript:openWin('pr00001')">PR00001</a> ・・・という二つのパーツ(★)があるのですが ここで分からないことがあります。 『function openWin(filename)』の『filename』にpr00001というhtmlファイルを埋め込む・・というのは理解できるのですが最初のパーツにある『newWin = window.open(winname + ".html"・・・』の中の『winname + ".html"』とは何を指しているのでしょうか・・・・。 大変申し訳ありませんがご指導お願いいたします。

  • window openについて

    こんにちは、例えば以下のようなスクリプトがあったとします。 <html> <form name = serchform> <input type=text name=id><br> <input type=submit value=ID検索 onclick="openwin()"> <a href="javascript:open(1);"><Img Src="1.bmp"></a><br> <a href="javascript:open(2);"><Img Src="2.bmp"></a><br> <script type="text/javascript"><!-- function openwin() { a = document.serchform.id.value; url = "http://10.8.2.166/test/syuhou_kensaku.php?id="+a; mywin = window.open(url,"","width=1120,height=500"); } function open(select) { if(aa == 1){ alert("Test") url2="http://10.8.2.166/test/kensaku.php?msg="+Testです; mywin2 = window.open(url2,"",""); } } //--></script> このソースを実行すると、ID検索ボタンをクリックしても何も反応せず 1.bmpをクリックすると、Testとメッセージが表示され、画面左下に 警告マークが表示され、何も反応しません。 しかし、function open(select)を削除し、ID検索ボタンをクリック すると命令した処理を実行してくれます。 function openwin()を削除したらその逆も起きるのかと考えやって みたのですが、これについては上記と同じエラーでした。 なぜこのようになるのか原因が分かりません。 どなたかご存知の方がいらっしゃいましたら、アドバイスよろしく お願い致します。

  • window.openについて

    ブラウザのメニューバーやアドレスバーを非表示する為に色々と調べていますがうまく調べる事ができませんでした。 自分なりに調べて記述して実行してみましたが動きがバラバラで・・・ <SCRIPT type="text/javascript">   window.open('http://localhost/menu.html', 'menu', 'menubar=no,toolbar=no,location=no,status=no,scrollbars=yes,resizable=no,left=0,top=0');   if(document.all){     window.opener = true;   }   window.close(); </SCRIPT> JavaScriptは使った事があまりなくどうか皆さんのお知恵を私にお貸し下さい。 対象のブラウザはIE、Firefox、Opera、Safariです。 申し訳ありませんがアドバイス等をいただけませんでしょうか。 些細な事でも何でも構いませんのでご教授宜しくお願いします。

  • 親ウインドウのアドレスバーを消したい

    親ウインドウから子ウインドウを呼び出す時に、 LinkWin=window.open('newwin.html','_blank','MENUBAR=NO,SCROLLBARS=1,RESIZABLE=1'); として、アドレスバーを消す事が可能ですが、 それを親ウインドウでやりたいのです。 ソースを以下のように書いてみたのですが IE6.0では動作しません。 親ウインドウでは無理なのでしょうか? if(navigator.appName == 'Netscape'){ //自分自身をwindow.openで開いたと思わせる window.open('','_top','menubar=no,resizable=1'); } else if(navigator.appName =='Microsoft Internet Explorer'){ var w=window.open('','_top','menubar=no,resizable=0'); w.opener=window } 以上、宜しくおねがいします。

  • window.openについて

    お世話様です。 早速本題なんですが画像のサムネイルページがあります。 そのページからサムネイルをクリックすると新しいウィンドウを開き元画像を表示するのですが、すべてサイズが違うためヘッダに <script language="JavaScript" type="text/javascript"> <!-- function openwin(url, w, h) { window.open(url,"","width=" + w + ",height=" + h); } // --> </script> と書いて、リンク<a>に onclick="openwin(this.href, 800, 600); return false;" とリンク1つづつに数値(幅,高さ)を変えながら入れて、 サムネイルが指定したサイズで新規ウィンドウとして開くところまでは至りました。 ですが、これでは、サムネイルをクリックする度に新規ウィンドウが開いてしまいます。ウィンドウの名前を指定しようと思い、 ヘッダを function openwin(url, name, w, h) { window.open(url, name, "width=" + w + ",height=" + h); とかえ、リンクを onclick="openwin(this.href, new, 800, 600); return false;" と変えました。 これでいけるかと思ったのですが、サムネイルと同じウィンドウに開かれてしまいます。さて、、、自分の力量はこんな程度で、もうわかりません。 どうすれば、アタらしいウィンドウの名前を指定出来るのか、 初歩的なところかもしれませんがご教授よろしくお願い致します。

  • 親ウィンドウの非表示

    JavaScriptで、 「アドレスバー・ツールバー等非表示でトップ画面を開く」 を以下のように1画面クッションをおいて うまく非表示になったのですが、 クッションをおいた画面が2秒ほど表示されてしまいます。 うまく非表示にする方法をご存知のかた教えてください。 <script language="javascript"> <!-- window.open("","","menubar=no"); if (document.all&&(navigator.userAgent.match(/MSIE (\d\.\d)/),RegExp.$1)>=5.5) {   var w=window.open("","_top")   w.opener=window   w.close() } else {   window.close() } //--> </script> よろしくおねがいします。

  • window,open

    ★=window.open("▲","☆","■") で★と☆がウィンドウの名前と書いてあったのですが 区別がわかりません これは開いたウィンドウの名前なのでしょうか? それともこのスクリプトがあるウィンドウをさすのでしょうか? あとウィンドウの名前のつけ方も教えていただけたら うれしいです 具体的には newWin=window.open("control,html","newWIn","width =240.height=120"); と書いてありました

  • 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> どこがいけないのでしょうか。教えてください。

  • window.openについて

    window.openを使って新しいウインドウを開きたいと思い質問させていただきます。 現在、 ---------------------------------------------------------------- <script type="text/javascript"> <!-- function w_opn() { newWin = window.open("abc.html","","width=200,height=300"); win.moveTo(0,0); } // --> </script> そして、BODY内に <a href="javascript:w_opn()">開く</a> --------------------------------------------------------------- というふうに作成しています。 この方法だと、リンク元が複数ある場合、HEAD内のJavaScriptも複数記述しないといけないと思うのですが、これをひとつのJavaScriptで制御したいのです。 どなたかご教授願えませんか?参考になるサイトのURLでも構いません。

  • window.openの時の大きさ

    こんばんは、よろしくお願いします。 別ウインドウでart.htmlを開くようにしました。 window.open("art.html","toolbar=1,location=0,directories=0,status=0,scrollbars=1,resizable=1,menubar=0,"); ところが、ウインドウの大きさが小さく画面の左上のほうにチョコット表示されます。 ネットで調べてfullscreenを使ってみたのですが、閉じるボタンや戻るボタンまでもなくなってしまいました。 ウインドウを開く際に最大化もしくはそれに近い状態で開くことはできるでしょうか?

専門家に質問してみよう