2017-08-14 10 views
1

私は次のjavascriptを使用しています(m59this前回の回答)。通常はブラウザウィンドウの一番下に表示されるリンクの宛先を非表示にしますリンク上にカーソルを置く:html/javascript:リンク先を非表示にして新しいタブでリンクを開く

<div> 
    <a data-href="http://www.google.com/"> LINK </a> 

    <script type="text/javascript"> 
     var anchors = document.querySelectorAll('a[data-href]'); 

     for (var i=0; i<anchors.length; ++i) { 
      var anchor = anchors[i]; 
      var href = anchor.getAttribute('data-href'); 
      anchor.addEventListener('click', function() { 
      window.location = href; 
      }); 
     } 
    </script> 
</div> 

これは完全にうまくいきますが、リンクも新しいタブで開くようにしたいと思います。そうするためにスクリプトをどのように変更する必要がありますか?

window.location = href;の代わりにwindow.open('href','_blank');を使ってみましたが動作しませんでした。

+0

回答はこの類似した投稿にあります:https://stackoverflow.com/questions/4907843/open-a-url-in-a-new-tab-and-not-a-new-window-using- javascript –

+0

リンク上で代わりにボタン要素を使用することができます。 – Anthony

+2

私は、なぜユーザーからURLを隠そうとする必要があるのか​​不思議です。 – BoffinbraiN

答えて

0

イムは、何かが欠けていない限り、行うには、最も明白なことは、そのアンカーにターゲットを追加です:

<a data-href="http://www.google.com/" target="blank"> LINK </a> 
-1

理由だけではなく、ユーザーをリダイレクトするためのonclickイベントハンドラを使用していませんか?

<a href="" onclick="onClick">link</a> 

function onClick(e) { 
    e.preventDefault(); 
    document.location.href='www.google.ca'; 
} 
+0

問題は 'addEventListener'ではなく' document.location = ... 'です。これは新しいタブでリンクを開くことができないため、この問題はあなたの答えでは解決されません。インラインイベントリスナーを使用することは、決して行うべきではありません。 –

+0

あなたはそうです、私は新しいタブを開くことについての部分を忘れました。私はあなたが「インラインイベントリスナー」と呼ぶものについてもっと知りたいのですが、なぜ彼らが悪い習慣であるかについて知りたいのです。これらのことを説明する文書へのリンクを私に提供できますか? @ t.niese –

+0

私は今、リンクがありません。一般的には、維持のためにcss、html、およびjsを常に分離しておく必要があります。より大きなjsプロジェクトでは、使用されていない関数や変数をチェックするlintingツールを使用したい場合があります。また、縮小スクリプトと最適化スクリプトを適用することもできます。 HTMLタグの内部にあるコードはそれらのスクリプトでは見られないので、リンターはこの関数が使用されていることを認識せず、関数名を短縮するため、ミニネーションスクリプトがコードを壊す可能性があります。 htmlタグから呼び出された関数はグローバルスコープ内で可視である必要があり、これも競合を招く可能性があります。 –

0

これはそれを行う方法である(新しいタブやリンク、あなたのコードの上にstackoverflowのブロックを試してみてください)

var anchors = document.querySelectorAll('a[data-href]'); 
 

 
     for (var i=0; i<anchors.length; ++i) { 
 
      var anchor = anchors[i]; 
 
      var href = anchor.getAttribute('data-href'); 
 
      anchor.addEventListener('click', function() { 
 
      window.open(href,'',''); 
 
      }); 
 
     }
<div> 
 
    <a data-href="http://www.google.com/"> LINK </a> 
 

 
</div>

0

あなたはhere、ウィンドウの構文を見ることができます。オープン:

var window = window.open(url, windowName, [windowFeatures]); 

だからあなたのようなものを使用する必要があり、新しいタブでリンクを開くには:あなたは、ウィンドウが「_blank」として開かれた場合、それは動作しません

var myNewTab = window.open(url, '_blank'); 

0

をあなたはwindow.open(href)を試してみましたか?

つまり、例の場合、hrefは変数ではなく文字列です(周囲には一重引用符があります)。

関連する問題