2012-04-18 10 views
4

私は、アンカーのonclickイベントとしてwindow.openを持っていれば、私は理解したいという面白い複雑さがある、新しいタブが必要に応じて開かれる。 onclickが関数を呼び出し、次にwindow.openを実行すると、新しいタブが開きますが、現在のタブも新しいURLを取得します。関数内のwindow.openは現在のタブを置き換え、新しいタブを開く

私はそれを実証することができますhereあなたがリンクをクリックすると、wheras hereも結果エリアに開かれているようです!

ありがとう シムオン。

答えて

5

あなたの最初のcaseステートメントが倒れています。あなたはbreakを追加する必要があります。

switch (t) { 
    case 1: 
     window.open(url,"_blank"); 
     break; 
    case 2: 
     window.location = url; 
     break; 
} 

breakがなければ、最初にマッチした1以下のすべてのcaseが実行されます。

2番目のケースにもbreakを追加しました。これは、通常は常にbreakというケースが良いとされています。実際には、JSLintは、不足のためにbreakにエラーとしてフラグを付けます。

+0

ありがとう - 私はそのdohを見つけなかったと信じていない!私はコースのjsfiddleを更新しました.... –

1

break;caseが必要です。

2

動作していない例では、switch文でbreakが欠落しています

function doclick(t, url) { 
    switch (t) { 
     case 1: window.open(url,"_blank"); break; 
     case 2: window.location = url; break; 
    } 
    return false; 
}​ 
0

は唯一break;は、あなたの必要な結果が得られます。

関連する問題