電子書籍の厳選無料作品が豊富!

jsの質問です。

aタグ内にtarget="_blank"を個々に設定するのが面倒なため、異なるドメインのサイトは別ウィンドウで立ち上げるようにするjsはどのように記述すればよいのでしょうか。

但し、すべての別ドメインを別ウィンドウで開くのではなく、別ウィンドウで開かないドメインが複数指定できるようにしたいです。

すぐ使えるサンプル等ありましたら教えてください。

A 回答 (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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/02/02 16:01

たとえばこんな感じで、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>

この回答への補足

ご丁寧な解説ありがとうございます。できました。

で、URLを複数指定したいのですが、この部分にどのように追加するのでしょか。

if(t.href.match(/^http:\/\/.*?yahoo\.co\.jp/)){

基本的な質問ですいません。

補足日時:2010/02/02 11:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!