- 締切済み
Java Script で別ウィンドウを開く
Java Script で別ウィンドウを開く仕組みの中で、親ページの中でいくつかリンクをクリックして複数のページを見るときに、はじめに開いた別ウィンドウのなかで表示サイトが切り替わっていくソースを教えてください。(クリックのたびにウィンドウが開かないようにする。という意味です。)
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- akanekor
- ベストアンサー率52% (102/194)
下のサンプル分かりづらかった+もっと楽な手があったので修正。 winオブジェがあったら、open前に名前の変更しています。 <html> <head> <script type="text/javascript"> var m_winObj = NULL; function chgUrl(strUrl ,strWindowName) { // open済みであるか判断 if (m_winObj) { // ウィンドウ名変更 m_winObj.name = strWindowName; } m_winObj = window.open(strUrl,strWindowName,""); return false ; } </script> </head> <body> <input type='button' value="テスト" onClick="chgUrl('3.html', 'sitelet');"> <input type='button' value="テスト" onClick="chgUrl('4.html', 'sitelet');"> </body> </html>
- akanekor
- ベストアンサー率52% (102/194)
そのような原因でしたら、 open時に返すwindowダイアログオブジェクトを 大域変数に入れて置く方法があります。 で、2度目以降からは、現在の名前を取得してopenします。 サンプル <html> <head> <script type="text/javascript"> var m_winObj = NULL; function test() { var strWinName; // 初期のダイアログ名 strWinName = "sitelet"; // open済みであるか判断 if (m_winObj) { // 現在のダイアログ名を取得 strWinName = m_winObj.name; m_winObj = window.open("3.html",strWinName,""); return false; } m_winObj = window.open("2.html",strWinName,""); return false ; } </script> </head> <body> <input type='button' value="テスト" onClick="test()"> </body> </html>
- akanekor
- ベストアンサー率52% (102/194)
>ウィンドウ名を指定してみたのですが、 >普通のサイトを開くときはひとつの別ウィンドウの中で切り替わっていくのですが、 >ポップアップを表示するコードが読み込まれているページをこのコードで開くと、 >次にページを開くときにもう一枚ウィンドウを開いてしまいます。 これと似た症状見たことあります。 その時の原因が、ポップアップのコードにjavascriptで name="ラグナ、、、、"; みたいな感じで、ウィンドウ名が変わる処理が 記述されていたのが、原因でした。 確認してみてください。 全然関係なければ、すみません。(-w-;
- m035
- ベストアンサー率44% (38/86)
>このようなときでも別ウィンドウは常に1枚にするということはできるでしょうか。 FireFoxというブラウザには機能拡張を追加し、新しいウィンドウで開くものを すべて一つのウィンドウに開くようにするツールがありましたが、 そのようなブラウザの機能としてでなければ そのページのtargetやwindow.openなどの設定が関係するので出来ないと思います。
お礼
別ウィンドウの中で開くページにそのウィンドウの名前を新たに指定するコードが含まれていることが原因でした。↓ window.top.name = "komado"; 結果的には"できない"ということでも原因がわかったのでとても勉強になりました。どうもありがとうございました。
- amountainblast
- ベストアンサー率33% (63/186)
こんにちは。あんまり意味は理解していないのですが、 いつも使うスクリプトです。 function test(mado,wi,he){ var newWin=window.open(mado, 'Sub', "toolbar=no , menubar=no , scrollbars=yes , width=" +wi+" , height=" +he); newWin.resizeTo(wi,he); newWin.focus(); } head内に上記のスクリプトを書いて リンクに href="JavaScript:test('指定url',横幅,縦幅)" とURLと画面のサイズを指定してやれば、できます。 簡単に説明すると function test(mado,wi,he){} で自分独自の関数を定義しています。 その時のmadoがurlを wiが横幅を、heが縦幅をそれぞれ指定しています。 リンクする場所で各指定をすると大きさが自由に変えれます。 window.openだけで大丈夫だと思うのですが,何故か newWin.resizeTo(wi,he); newWin.focus(); の2行が入っています。 自分で書いたスクリプトなのですが、忘れました^^; window.openで使う二つ目の指定部分(例ではmado)が開く画面の名前です。 この名前が同じだったらいくつも画面が開かないで切り替えることができます。 簡単にそして、あまりよく分からない説明かもしれませんが、大体こんな感じです。 後はご自分で触ってみたら複雑なスクリプトではないので、すぐにわかるかと思います。
- tsuna555
- ベストアンサー率53% (22/41)
window.open("表示したいURL","ウィンドウ名"); こんな感じで同じウィンドウ名を指定すれば,指定したウィンドウの中で表示サイトが切り替わります。
補足
ご回答ありがとうございます。下のような感じで試してみました。 <a href="http://www.yahoo.com" target="sitelet" onClick="window.open('http://www.yahoo.com,'sitelet'); return(false)">ホニャララ</A> "sitelet" というウィンドウ名を指定してみたのですが、普通のサイトを開くときはひとつの別ウィンドウの中で切り替わっていくのですが、ポップアップを表示するコードが読み込まれているページをこのコードで開くと、次にページを開くときにもう一枚ウィンドウを開いてしまいます。このようなときでも別ウィンドウは常に1枚にするということはできるでしょうか。
お礼
原因は教えていただいたとおり、別ウィンドウで開く先のサイトにそのウィンドウ名を変えるコードがあったためでした。以下のようなコードが読まれていました。 window.top.name = "komado"; このコードで別ウィンドウの名前が "komado" に変わってしまっていました。試しにはじめから別ウィンドウの名前を同じ、"komado" にしてみたら、新たな別ウィンドウを開かずに見ることができました。 でもこのソリューションは当然のことながらこのページ限定なので他のページネームが読まれた場合には対応できませんね。 でも原因がわかったのでとても勉強になりました。どうもありがとうございました。