<script>
function openCushion(e) {
host = location.hostname;
href = this.getAttribute("href");
dn = href.indexOf(host);
if (~href.indexOf("://") && (dn <= -1 || dn > 8)) {
nw = window.open("", "cushion");
ws =
'<p style="text-align:center;margin-top:20px;">' +
'<a href="%s" rel="noreferrer">%s</a><br>にジャンプしちゃうんですか?<br>' +
'<button onclick="window.close();" style="margin-top:20px;">CANCEL</button></p>';
nw.document.body.innerHTML = ws.replace(/%s/g, href);
e.preventDefault();
}
}
window.addEventListener("load", function () {
if (!this.document.getElementById("ccm-tooltip-holder")) {
document.querySelectorAll("a").forEach(function (ce) {
ce.addEventListener("click", openCushion);
}, false);
}
});
</script>
設置方法:
外部へのリンクがあるページに上記をコピペしたHTMLブロックを追加すればOK。
リンクとして埋め込む時は最初と最後の<script></script>タグを外して.jsファイル(例 noreferrer.js)として保存し、適宜ヘッダやbody終盤あたりから読み込んでください。
テンプレートで読み込む場合のサンプルコードは次の通り。
<script type="text/javascript" src="<?= $view->getThemePath() ?>/js/noreferrer.js"></script>
使い方:
編集モードでは動作しませんので、設置後ログアウトした状態でお試しください。
外部リンクをクリックすればクッションページが開きジャンプの確認をします。
動作条件:
次の場合は通常のリンクとして動作します。
・編集モード時
・「絶対パス」「相対パス」「mailto」のリンク
・同一FQDN向けのリンク
※サブドメインが異なる場合はクッションページが表示されます。
お試しあれ。
五月雨
Re: 外部サイトへのリンクはクッションページを経由させたい
返信ありがとうございます。
今のところあらゆる方法を模索している段階ですので、どういったアイデアでも歓迎です。
ぜひ、お教えいただきたく思います。