shikaの雑記ブログ

web系エンジニアの雑記ブログ

技術

jQueryにてリンク先のドメインを一括置換

投稿日:

htmlのaタグ内に設定された特定のドメイン部分のみを、
開発サーバなど別環境に設置されている時にはその時のドメインに後から置換する、という処理を要求されたので
locationやreplaceやRegExpオブジェクトを総動員して実装しました。

$(window).load(function() {
    var tgtDomain = 'https://www.sample.jp'; //置換対象のドメインを設定
    var nowDomain = $(location).attr('protocol') + '//' + $(location).attr('host');
    if (tgtDomain) { //tgtDomainの入力の有無を判定
        if (tgtDomain != nowDomain) { //現在ドメインと対象ドメインの不一致を判定
            $('a[href^="'+ tgtDomain + '"]').each(function() { 
                var replace = null;
                var replace = $(this).attr('href').replace(new RegExp(tgtDomain, 'g'), nowDomain);
                $(this).attr('href',replace);
            });
        }
    }
});

tgtDomain``nowDomain を逆にしても使えるかも。

参考サイト


相対パスリンクに現在のドメインを挿入(2018/06/15追記)

上記を改変し、相対パスで書かれたリンクの前に現在のドメインを挿入する処理を実装しました。
開発サーバなどのディレクトリ構成が本番サーバと異なる場合などに使えます。

$(window).load(function() {
    var nowDomain = $(location).attr('protocol') + '//' + $(location).attr('host');
    $('.wysiwyg a[href^="/"]').each(function() {
        var replace = null;
        replace = $(this).attr('href');
        if (replace.match(/^\/[^\/]/)){
            replace = nowDomain + replace;
            $(this).attr('href',replace);
        }
    });
});

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

クロスドメイン制約を回避するChromeショートカットを作る

No 'Access-Control-Allow-Origin' header is present on the requested resource. のエラーのせいでドメイン …

2重線が重なり合うスタイルを組むには(No 画像, Yes CSS!)

この画像のように、2重線が少しズレて重なっている枠線の実装に迫られましたが、 通常のborderとbox-shadowを少しずつずらせばcssのみで実現できました。 画像も疑似要素も使用してませんよ! …

schtasks.exe – コマンドを時刻指定して実行する

1日の業務の中で決まった時刻に特定のコマンドを実行したい場合には、タスクスケジューラで登録すると便利です。 手順と概略 Windowsではタスクスケジューラとして schtasks.exe が用意され …

jsでメール本文の初期値を設定

メールリンクをクリックしてメーラーを起動した際に、 メール件名や本文、BCCが初期値として入力させるには <a href="mailto:mail@sample.com?bcc=tes …

住所と緯度経度を教えてくれるChatbot作った

G suiteアカウント向けにリリースされたHangouts Chatでは、誰でも簡単にbotが作れちゃうとか。 せっかくなんで何か社内業務に課題でもないかガサ入れしていたら、 「ある施設の緯度と経度 …