- ベストアンサー
リンク先を新しい窓で開くには?
- javascript初心者です。2回目以降、リンク先が一つのページ上に上書きされてしまいます。リンク先を開くたび新しい窓で開きたいのですがどうしたらよいのでしょうか?
- target=_blankやwindow.openなどではないかと思いますが設置場所がよくわかりません。
- また、サンプルソースを見てもjavascriptの部分がいまいち理解できずにいます。だいたいの流れやURLクリエの部分(HTMLの部分)はなんとなく理解できるのですが文字コードなど表示方法などのところがよくわかりません;;わかりやすくコメントを書いていただけると助かります!
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
開くたびに新しい窓/タブで開く方法は幾つかあります。 ただし窓なのかタブなのかは環境によって変わるのでご注意ください。 * window.open の第二引数に '_blank' を指定 * 要素 <form> の属性 target に '_blank' を指定して、改行キー or ボタン押下 or submit() * 要素 <a> の属性 target に '_blank' を指定して、クリック or click() それにしても、ご提示のサンプルソースがあまり良い教材ではありません。 えらく古いし冗長だし命名も変だし文字コードもUTF8で十分だし... 昔のブラウザを考慮しなければいけない特殊な事情があるなら別ですが、 今ならもっと簡単にすっきり書けます。 <form name=fm> <input type=text name=k size=60> <button type=reset>Reset</button> <br> <button type=submit name=ggl>Google</button> <button type=submit name=yho>Yahoo! Japan</button> </form> <div style="display:none"><!-- 見せたくないから見せない --> <form name=subggl method=get target=_blank action="http://www.google.co.jp/search"> <input type=text name=q><a href="http://www.google.co.jp/" target=_blank>top</a></form> <form name=subyho method=get target=_blank action="http://search.yahoo.co.jp/search"> <input type=text name=p><a href="http://www.yahoo.co.jp/" target=_blank>top</a></form> </div> <script> addEventListener('load', function(){ var _=0; // 読みやすくするオマジナイ _ ; function searchOnNewTab(name, v) { _ , _ ; var form = document.forms['sub' + name]; _ , _ ; if (v === '') { _ , _ , _ ; form.getElementsByTagName('A')[0].click() _ , _ ; } else { _ , _ , _ ; form.getElementsByTagName('INPUT')[0].value = v; _ , _ , _ ; form.submit(); _ , _ ; } _ ; } _ ; document.forms['fm'].addEventListener('click', function(ev){ _ , _ ; if (ev.target.type != 'submit') return; // 目的のボタン以外は処理しない _ , _ ; ev.preventDefault(); _ , _ ; var form = ev.currentTarget; _ , _ ; var name = ev.target.name; _ , _ ; var valu = form.elements['k'].value; _ , _ ; searchOnNewTab(name, valu); _ ; }, false); }, false) </script> ご参考まで
お礼
回答ありがとうございます! サンプルが古いので助かりました。こんなにすっきりなるんですね!! 窓かタブかはブラウザで変わりますね・・・ すべてタブで開きたいのですが無理なんですかね? あとなぜかsafariだけフォーム未入力時の処理が動作しなかったです><
補足
お礼と補足が逆でしたね^^; getElementsByTagNameはsafariでバグがあるそうです ClassNameにするかボタンにすることで解決できました! 窓かタブかはブラウザの設定でどうにかなりました! 回答ありがとうございまいた!!!