Baccho Log

No Image

Sponsored Link

[JavaScript]URLをパースする方法

  • 投稿日:
Tags:
JavaScript
Categories:
プログラミング

外部リンクにのみ、アイコンや_blankを付けたい

いきなり外部リンクにアイコンとかを追加して欲しいとか言われた場合、
全ページの外部リンクにclass付けて~とか、もうヤバいじゃないですか?

そんな時に、これがあれば一発OK!(OKとは言ってない)
※ご利用は自己責任で

何でjQuery使ってるの?とかのクレームも受け付けません。

let parse  = document.createElement('a');
$('a[href]').not('[href*="' + location.hostname + '"]').each( function( index, el ) {
    parse.href = $(el).attr('href');
    if ( !/{example}/.test( parse.hostname ) ) {
        $(el).attr('target', '_blank');
    }
});

因みにIEとかシカト出来て、モダンブラウザだけでいいよ!
っていう神クライアントなら、URLコンストラクタが使えるので下記でも大丈夫です。

$('a[href]').not('[href*="' + location.hostname + '"]').each( function( index, el ) {
    let parse = new URL( $(el).attr('href') );
    if ( !/{example}/.test( parse.hostname ) ) {
        $(el).attr('target', '_blank');
    }
});

余談

ググると、下記の結構下記のコードが出てくるのだけど、
サブドメインへのリンクがあると使えないとか、//example.jp で記載されてるとか
で機能しないでハマりやすいと思うので注意。

細かいこと気にせずに一気にやってしまって大丈夫なら、下記でもいいと思う。

$('a[href^="http"]'):not('[href*="' + location.hostname + '"]').attr('target', '_blank');
« [DTM]Piapro StudioのボーカルトラックをCubaseで別々にミックスしたい最新の投稿です

Sponsored Link

コメントする

記事の感想や修正依頼等ありましたら、コメントをお願いいたします