2012-04-23 49 views
10

私がやっているプロジェクトのウェブサイトを作成しました。 ウェブサイトのコンテンツには、訪問可能な外部Webページ用のリンクがいくつかあります。 ユーザーがリンクの1つをクリックしている間に、指定されたリンクに移動し、現在のページには表示されません。 私がしたかったのは、クリックしたリンクの指定されたウェブサイトを、リンクをクリックしたときに新しいタブに表示させることでした。この方法で、ユーザーは現在のページに留まり、新しいタブで他のページを表示することもできます。私は、インターネット上で見て、有用であると思われたその本を見つけた新しいタブでリンクを開く

function externalLinks() 
{ 
    var anchors = document.getElementsByTagName("a"); 
    for (var i=0; i<anchors.length; i++) 
    { 
     var anchor = anchors[i]; 
     if(anchor.getAttribute("href")) 
     anchor.target = "_blank"; 
    } 
} 
window.onload = externalLinks; 

私が直面してる問題は私のウェブサイトのナビゲーションバーは、アンカータグが含まれていることです。したがって、ユーザーがナビゲーションバーのリンクをクリックすると、新しいタブが開きます。ユーザーが自分のウェブサイトのコンテンツ内のリンクをクリックした場合にのみ、これが発生するようにします。したがって、ユーザーがナビゲーションバーのリンクをクリックした場合、新しいタブを開くべきではなく、指定された目的地まで移動する必要があります。

私はあなたがこのためにJavaScriptを使用するために必要なコンテンツ内のすべてのリンクにクラスを追加しようとしたgetElementByClassNameを使用しますが、それはまだ

誰でもこの

+1

それはおそらく良いアイデアだと思いますが、あなたが本当にあなたの訪問者にそのような決定を強制すべきではない - を参照します。http ://www.webcredible.co.uk/user-friendly-resources/web-usability/new-browser-windows.shtml – CJM

答えて

28


あなただけのHTMLを使用することができます。

<a target="_blank" href="YourAmazingURL">Click here for Amazing URL</a> 

もう一つの例:

<a target="_blank" href="http://www.google.com/">Google</a> 

これは、ターゲットの属性を利用しています。ターゲット属性の

詳細情報:またhttp://www.w3schools.com/tags/att_a_target.asphttp://www.w3schools.com/html/html_links.asp

EDIT:

XHTMLについては、ちょうどこの操作を行います。

<a href="YourAmazingURL" onclick="window.open(this.href,'_blank');return false;">Click here for Amazing URL</a> 

それとも、再び:

<a href="http://www.google.com/" onclick="window.open(this.href,'_blank');return false;">Google</a> 

+0

問題は、私はXHTMLのみを使用する必要があり、ページの検証時には属性が属性ではないと言います –

+0

There - XHTMLのために更新されました。 – anonymous

+0

ありがとうございます。私はまた、jQueryを使ってそれを行う方法を見つけましたが、この方法も知っていいです:-)。 –

2

で私を助けることができる動作しませんでしたしました?

HTMLのタグに属性を直接追加することはできません。例えば

:ジャバスクリプトが必要ない場合は、おそらくあなたはそれを行うための簡単な方法だろう<a href="http://www.google.co.uk" target="_blank">Google</a>

<a href="www.google.com" id="theidgoeshere">Google</a> 

次に、あなたのJavaScriptで

var anchor = document.getElementById("theidgoeshere"); 
    if(anchor.getAttribute("href")) 
     anchor.target = "_blank"; 

はまた、あなたが望むかもしれない点に注意してください。そうは次のように

+1

問題は、私はXHTMLのみを使用する必要があり、ページの検証時にはtargetは属性ではありません –

-1

あなたがこれを行うにはdocument.getElementById("theidgoeshere");

を使用したいが、あなたのリンクにid属性を設定しますjavascriptなしでやること。アンカータグにtarget="_blank"と入力してください。

0

あなたのJavaScriptに依存する必要がある場合:

は、基本的にはあなたは自分のif -conditionを変更する必要があります(外部の場所にアンカーリンクポイントかどうかをチェックしたりしないように)。

if(anchor.getAttribute("href"))の代わりにif(anchor.getAttribute("href") && anchor.hostname!==location.hostname)を使用してください。コードのビットで

はクリーンアップ次のように、あなたの関数はなります。

function externalLinks() { 
    for(var c = document.getElementsByTagName("a"), a = 0;a < c.length;a++) { 
    var b = c[a]; 
    b.getAttribute("href") && b.hostname !== location.hostname && (b.target = "_blank") 
    } 
} 
; 
externalLinks(); 
+0

downvoterはdownvoteについてのコメントを提供できますか?ありがとう! – eyecatchUp

関連する問題