• ベストアンサー

下記HTML(java?)だと,ホップアップが1つしか出来ません。

続けざまの質問になりますがご返答宜しくお願いいたします。 ちなみに,HTMLタグのように,target=newっていうのを入れてみたのですがどうも違うようですね。 また,この開かれた方のHP(自分のHPじゃないので,hopup1.htmのソースは触れません),hopup1.htm を自動的に閉じてくれる方法はありませんか? <html> <head> <script type="text/javascript"><!-- function popwin(){ pw=window.open("hopup1.html","pop","width=10, height=10, top=0, left=0"); } //--></script> </head> <body> <input type="button" value="login" href="#" onClick="popwin()"> </body> <html> <head> <script type="text/javascript"><!-- function popwin(){ pw=window.open("hopup2.html","pop","width=10, height=10, top=0, left=40","new"); } //--></script> </head> <body> <input type="button" value="login" href="#" onClick="popwin()"> </body>

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

  • ベストアンサー
noname#199778
noname#199778
回答No.4

まず、二つのHTMLソースが並べられていますが、これは一つのファイルとして提示されているのですね? この記述だと、正常に反映されない可能性があります。 二つのページソースをまとめたほうが良いでしょう。 その点については後ほど… まず、ウィンドウが複数開かない点について。 window.open()は、指定されたウィンドウ名を持つウィンドウに対して、指定されたページを読み出すようになっています。 例にあるソースであれば、ウィンドウ名としてpopという値が渡されていますので、window.open("***.htm","pop")という形で新しいウィンドウを開こうとしても、前に同じ名前で開かれたウィンドウが閉じていない限りは思うように動作しません。 新しいウィンドウを開きたい場合は、これを別の名前に設定する必要があります。 なお、常に新しいウィンドウで開かせたい場合は、ウィンドウ名として"pop"の代わりに"_blank"と指定してみて下さい。 また、開いたウィンドウを、ウィンドウを開いた側から閉じることも可能です。 その例を挙げておきます。 <html> <head> <script type="text/javascript"><!-- function popwin(){ pw=window.open("hopup1.html","_blank","width=10, height=10, top=0, left=0"); setTimeout("pw.window.close()",10000); /* 10000ミリ秒後(10秒後)に、pwというIDで開いたウィンドウを閉じます。 */ } //--></script> </head> <body> <input type="button" value="login" onClick="popwin()"> </body> <html> こうすれば、ウィンドウを開いた側で、開いたウィンドウを閉じることができます。 ただし、ここで書いた例では、ウィンドウを開いてからロードが完了するまでの時間を待ってくれないので、回線状況によってはページがロードされる前にウィンドウが閉じられる可能性もあります。 推測ですが、質問分にあるソースをすっきりと書き直すのであれば、 <html> <head> <script type="text/javascript"><!-- function popwin1(){ pw=window.open("hopup1.html","_blank","width=10, height=10, top=0, left=0"); setTimeout("pw.window.close()",10000); } function popwin2(){ pw2=window.open("hopup2.html","pop2","width=10, height=10, top=0, left=40"); } //--></script> </head> <body> <input type="button" value="login" onClick="popwin1()"><br> <input type="button" value="login" onClick="popwin2()"> </body> <html> このようにしてみてはいかがでしょうか。 なお、サブウィンドウを呼び出した側のウィンドウは、JavaScriptで閉じようとすると警告のダイアログが出るようになっています。 これはブラウザの仕様ですので、回避できないと思われます。 長々と失礼しました。 見当違いでしたら、ごめんなさい。

flower_pink
質問者

お礼

ほんとに,ここに質問してよかったです。お勉強させていただいた上に,見事に解決しました。ありがとうございました。

その他の回答 (3)

  • basil
  • ベストアンサー率35% (148/420)
回答No.3

下の補足を見ました。 私もけっこう勘違いしていたようです。 要求はこういうことですかね? <html> <head> <script type="text/javascript"> <!-- function popwin(winurl,wname){ window.open(winurl,wname,"width=10, height=10, top=0, left=0"); } //--> </script> </head> <body> <form> <input type="button" value="login1" onClick="popwin('hopup1.html','pop1');"> <input type="button" value="login2" onClick="popwin('hopup2.html','pop2');"> </form> </body> </html>

flower_pink
質問者

お礼

わざわざ追伸を書いていただきありがとうございました。とても役に立ちました。

  • basil
  • ベストアンサー率35% (148/420)
回答No.2

うーむ。かなり大変なことになってますね、ソース。 まず、ひとつのHTMLのなかになぜか<body>~</body>が2つもあります。これはまずいです。<html>~</html>は1.5コ?。これもかなりまずいです。(まずいと言っても、なにかが壊れたりする訳じゃないんですが) まず HTMLは全体をひとつの<html>~</html>で囲みましょう。 次に、そのなかに<head>~</head>と<body>~</body>が来ます。通常<script>~</script>は<head>の中に入れます。さらに<input>タグは<form>~</form>タグに入れなければなりません。さらに、JavaScriptで同じ名前の関数(function)を宣言することはできません。 以上をふまえて、ただしく書き直すと… おっと、、ここまで書いて気付きましたが、 上記のソースはコピーミスで、2回だぶってペーストしてしまったもののようなきがします。 ということで改めて質問を良く読むと… つまりポップアップウィンドーをクリックのたびにあたらしく重複して開きたいってことですね。 了解です。 改めて解説しますと、 open()の2番目の引数として"pop"が指定されていますがこれはウィンドーネームであり、同一の場合は同じウィンドーだと認識されてしまいます。 そこでここは変えてしまうとよいです。 これをふまえてソースはこうなります。 (いろんな方法があるのでこれがベストかどうかは分かりません) <html> <head> <script type="text/javascript"> <!-- var wn = 0; function popwin(wn){ wn++; alert(wn); pw=window.open("hopup.html","win"+wn,"width=10, height=10, top=0, left=0"); return wn; } //--> </script> </head> <body> <form> <input type="button" value="login" href="#" onClick="wn = popwin(wn)"> </form> </body> </html>

flower_pink
質問者

補足

わざわざ訂正したソースを載せていただきありがとうございます。 紛らわしHPと,数々のエラーすいません。超初心者ということで見逃してやってください。 本題ですが,やりたいことは,2つのホームページを小さく左上に別々に2つホップアップさせたいと思っています。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

ちなみにJAVAではなくて、JavaScript。別物です。 自動で閉じると言うと、秒で判断するのですか? また、新しいウィンドウはhopup2のようですが、 hopup1はどれでしょう? あなたが利用する環境で、ポップアップウィンドウが邪魔だというのであれば、 自動的に閉じるツールというのはあります。

flower_pink
質問者

補足

>JAVAではなくて、JavaScript。別物です。 指摘していただいてありがとうございます。なんとなく違うということは聞いていたのですが,やはりちがうみたいですね。 で,本題なのですが, 秒単位で指定します。 一応,貼り付けたソースをIEで開くと,2つボタンがあって,始めのボタンがhopup1で,2番目のボタンがhopup2になっていると思います。 タグはほんの少し分かるのですが,javascriptは全く分かりません。ご教授宜しくお願いいたします。

関連するQ&A

専門家に質問してみよう