
Sponsored Link
[JavaScript]URLをパースする方法
外部リンクにのみ、アイコンや_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');