• ベストアンサー

ドメインを指定してリンクを別窓で

jsの質問です。 aタグ内にtarget="_blank"を個々に設定するのが面倒なため、異なるドメインのサイトは別ウィンドウで立ち上げるようにするjsはどのように記述すればよいのでしょうか。 但し、すべての別ドメインを別ウィンドウで開くのではなく、別ウィンドウで開かないドメインが複数指定できるようにしたいです。 すぐ使えるサンプル等ありましたら教えてください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>複数指定 じゃ、こんな感じで複数の正規表現をかいてください <script> try{ document.addEventListener ('click',function(e){clickfunc(e)},true); }catch(e){ document.attachEvent('onclick',function(e){clickfunc(e)}); } function clickfunc(e){ var t = (e.srcElement || e.target); if(t.nodeName=="A"){ var r =[ new RegExp("^http:\/\/.*?yahoo\.co\.jp"), new RegExp("^http:\/\/.*?goo\.ne\.jp"), new RegExp("^http:\/\/.*?wikipedia\.org") ]; var flg=false; for(var i=0;i<r.length;i++){ if(t.href.match(r[i])){ flg=true; break; } } if(flg){ t.target="_self"; }else{ t.target="_blank"; } } //e.preventDefault(); } </script> <a href="http://www.yahoo.co.jp">y1</a> <a href="http://headlines.yahoo.co.jp/hl">y2</a> <a href="http://search.yahoo.co.jp/search?p=hoge">y3</a> <a href="http://ja.wikipedia.org">w1</a> <a href="http://ja.wikipedia.org/wiki/hoge">w2</a> <a href="http://www.google.co.jp/">g1</a> <a href="http://www.google.co.jp/search?q=hoge">g2</a>

ikehata_shin
質問者

お礼

ありがとうございました。 あなたは神です。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

たとえばこんな感じで、targetを指定してやったり、 場合によってはwindow.openで処理したりすればいいでしょう。 今回だとyahooは自windowにgoogleは他windowに なにも指定されていないのはデフォルトのtargetに <script> try{ document.addEventListener ('click',function(e){clickfunc(e)},true); }catch(e){ document.attachEvent('onclick',function(e){clickfunc(e)}); } function clickfunc(e){ var t = (e.srcElement || e.target); if(t.nodeName=="A"){ if(t.href.match(/^http:\/\/.*?yahoo\.co\.jp/)){ t.target="_self"; }else{ t.target="_blank"; } } //e.preventDefault(); } </script> <a href="http://www.yahoo.co.jp">y1</a> <a href="http://headlines.yahoo.co.jp/hl">y2</a> <a href="http://search.yahoo.co.jp/search?p=hoge">y3</a> <a href="http://www.google.co.jp/">g1</a> <a href="http://www.google.co.jp/search?q=hoge">g2</a>

ikehata_shin
質問者

補足

ご丁寧な解説ありがとうございます。できました。 で、URLを複数指定したいのですが、この部分にどのように追加するのでしょか。 ↓ if(t.href.match(/^http:\/\/.*?yahoo\.co\.jp/)){ 基本的な質問ですいません。

関連するQ&A