最近、弊社の管理するwebサイトでそのようなことがあったので修正の覚書です。
本来colorboxはクリックするとモーダルが立ち上がりその中に指定の画像や動画・webページを表示するjQueryプラグインなのですが。そのモーダルの中身を表示する前に勝手にその画像などにページ遷移してしまうという現象です。
原因
ページ内のタグを一つずつ消したりして原因を調査したところGoogle タグマネージャーのタグを消すことで正常に動作することが確認できました。
プレビューツールを使い検証したところ、その中でもGA4タグが今回の不具合を引き起こしている原因でした。
colorboxはモーダル上で開く画像URLをaタグのhrefに入れるのですが、aタグをクリックした際にページ遷移を止める動作が何らかの原因で止められているか、止めた後に再度aタグクリックのアクションが行われているようでした。
解決策
hrefの中身を避難させhrefを無くすことで対応できます。
他のプラグインが原因の場合でも使える対応かもしれません。
hrefがなければページ遷移の指定が認識されないのでページ遷移しません。
そしてhref属性がなくなったことでカーソルが変わらなくなるのでcssでcursor: pointerを追加しています。
// hrefの中身をdata-hrefに移しhrefを削除
let colorboxes = document.querySelectorAll('.iframe');
colorboxes.forEach(e=>{
let href = e.getAttribute('href');
e.setAttribute('data-href',href);
e.removeAttribute('href');
})
// ここに本来colorboxのメソッドを繋げていたセレクタを指定
$(".iframe").each(function () {
// それぞれのモーダルクリック時の対象パスをdata-hrefに入れた値に設定
let modal_href = $(this).attr("data-href");
$(this).style(["cursor","pointer"])
$(this).colorbox({
href: modal_href,
// 以下任意のcolorboxの設定
iframe: true,
width: "740px",
height: "700px",
maxWidth: "90%",
maxHeight: "90%",
})
})
colorbox自体、2年以上更新されていないプラグインですが使用率が高いプラグインだと思うのでこの記事が役に立てば幸いです。
■□■□■□■□■□■□■□■□■□■□
営業時間:平日9:00〜18:00
●福岡オフィス
〒810-0042
福岡市中央区赤坂1-12-6 赤坂Sビル2F
TEL:092-726-5550 FAX:092-726-5558
●宮崎出張所
〒880-0001
宮崎県宮崎市橘通西3-10-32
宮崎ナナイロ東館8FATOMica内
⇒ メールでのお問合せ
⇒ ホームページ制作実績
⇒ 会社案内
■□■□■□■□■□■□■□■□■□■□