web-dev-qa-db-ja.com

すべてのリンクで_blankをターゲットにする

ターゲット_selfを使用してhtmlページを作成しました

しかし、リンクが多すぎて、すべてのリンクターゲットを_blankに変更したいので、それを行うのは困難です。 1回書くだけですべてに当てはまるJavaScriptはありますか?

私のコードは長すぎて、すべてのリンクを変更するのに何度もかかるからです。何かトリックはありますか?

このような

<a href="http://www.google.com"></a>
<a href="http://www.facebook.com"></a>
<a href="http://www.gmail.com"></a>
<a href="http://www.Twitter.com"></a>
<a href="http://www.stackoverflow.com"></a>
<a href="http://plus.google.com"></a>
13
Hammad

これをあなたの<head>に入れてください

<base target="_blank">

これにより、ページ上のすべてのURLが新しいページで開かれます。ただしtargetが指定されている場合を除きます。

これはHTML5のみの機能であり、 Googleのio-2012-スライドスライドパッケージ から学びました。

27
Thom Wiggers

あなたの質問に答えるために、jQueryはこれを簡単にします:

<script src="//ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<script>
    $(function() {
        $('a[href]').attr('target', '_blank');
    });
</script>

これにより、href属性のない<a>タグは変更されません。

7
Oliver Spryn

プレーンJSでも非常に簡単です。

var links = document.getElementsByTagName('a');
for (var i=0, len=links.length; i < len; i++) {
  links[i].target = '_blank';
}

(このスクリプトを閉じる直前に置いてください</body>タグまたはいずれにせよすべての後に<a>ページのタグ。)

3
Matt Browne

HTMLエディターを使用して単純なfind and replaceを実行できない場合は、jQueryを使用して次のようなことを実行できます。

$('a').click(function() {
  $(this).attr('target', '_blank');
});

これにより、クリックされて新しいウィンドウまたは新しいタブで開かれるすべてのaに対してtarget="_blank"が自動的に実行されます(これを制御することはできません。ユーザーのブラウザ設定によって異なります)。

[〜#〜]フィドル[〜#〜]

お役に立てれば!!

1
Fr0zenFyr

私はこれに対処しなければなりませんでしたたくさん何度も。記録のために:

Javascriptにこのタスクを実行させる必要はないと思いますが、別のアプローチがあります。代わりに、エディターの検索/置換機能を使用して、次のようなことを行うことができます(リンクがその形式である場合)。

  • エディターを開き、<a hrefを探します。

    Find <a href

  • 置換フィールドに<atarget="_blank"hrefと入力します。

    Replace

  • 交換してください。

    Text replaced

または、.com">を検索し、それを.com" target="_blank">に置き換えることで、タグの末尾に追加できます。これは、検索/置換機能を備えたすべてのエディターで実行できます。パターンを見つけて、それらをどのように置き換えるかだけです。

0
arielnmz