2017-12-09

Blogger 外部リンクを別ウィンドウ(タブ)で開く(jQueryなし)

リンクを別ウィンドウ(タブ)で開くように設定することには賛否両論がありますが、やってみたかったのでやりました。

以下のスクリプトを [テーマ] -> [HTMLの編集] で</body> の直前に挿入し、保存すれば外部リンクが別ウィンドウ(タブ)で開くようになります。

JavaScript
<script type='text/javascript'>
    var rex = new RegExp('^(https?:)?\\/\\/(?!' + location.hostname + ')');
    [].forEach.call(document.getElementsByTagName('a'), function(elm) {
      if (rex.test(elm.href)) {
        elm.target = '_blank';
      }
    });
</script>

補足

  • </body> の直前に置く前提です。<head> に書きたい場合は、
document.addEventListener('DOMContentLoaded', function() {
  /* write here */
});

  で括ってください。

  • モバイルでは無効にしたい場合、
  if (!/(\?|&)m=1/.test(location.search)) {
      /* write here */
  }

  で括ってください。
  Bloggerではモバイルの場合、クエリ文字列がm=1となるので、それを利用しています。

  • Blogger の [HTMLの編集] で保存すると、'&#39; (数値文字参照)に変換されます。これを避けたい場合は、CDATA セクションで括ってください。
//<![CDATA[
  /* write here */
//]]>


参考記事

以下の記事を参考にしました。

もうjQueryには頼らない!素のJavaScriptでDOMを操作するための基礎知識 - WPJ

古いブラウザーのサポートが必要ないなら、もうjQueryを使わなくてもいいかもしれません。ネイティブなDOM APIの使い方をサンプルとともに解説します。

No comments:

Post a Comment