monoのメモ帳

HTMLとCSSを勉強しながらはてなブログをカスタマイズ中です。

はてなブログで記事のタイトルとURLをコピーするボタンを設置する方法の備忘録

※自分用の備忘録として記録している記事です。

WordPressを利用されている方のブログによく設置されている「記事のタイトルとURLをコピー」するボタン。

記事のタイトルとURLをコピーするボタン

わたし個人はこのボタンを使い勝手がわからずに全く使っていなかったのですが、若い世代の方はクリップボードにコピーしてLINEやTwitter投稿することが多いらしいので、試しに設置してみました。

でも、わたしの知識では作ることができないので、今回参考にさせていただいたサイトはこちら。

参考サイト: 「なてなブログ」で、記事のタイトルとURLをクリップボードにコピーする機能を作成 - retireSakiの日記

JavaScriptのソースコードはそのままコピペで利用させていただいて、CSSの部分は自分のサイトに合うように変更しました。

それから、今回はFont Awesomeのアイコンは使わずにはてなのWEBフォントを使っています。

設定手順1 clipboard.jsを使う

jQueryのライブラリの「clipboard.js」を利用して実装するので、利用するためのcdnをヘッダー部分で呼び出します。

「管理画面」→「  設定」→「詳細設定」→「<head要素>にメタタグを追加」に下のコードをコピペして貼り付けます。

<script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>

設定手順2 表示させたい箇所にHTMLを記述

個別記事下に表示させたいので

「管理画面」→「 デザイン」→「 カスタマイズ」 →「記事」→「記事下HTML」に下のコードをコピペします。

わたしの場合はSNSボタンと並べたかったので li の中に入れてFlexboxで横並びにして真ん中寄席にしていますが、単体で設置するなら↓こんな感じです。

<div class="archive_copy_btn">
  <button class="btn copy_btn" data-clipboard-text="dont copy"><i class="blogicon-snippet"></i> 記事のタイトルとURLをコピー</button>
</div>
<script>
// var clipboard = new ClipboardJS('.btn');
var clipboard = new ClipboardJS('.btn', {
    text: function(trigger) {
   var title_url = document.title+" \n"+document.URL;
        return title_url;
    }
});
clipboard.on('success', function(e) {
    alert('コピーしました!');
});
clipboard.on('error', function(e) {
    alert('お使いの端末はこの機能に対応していません');
});
</script>

設定手順3 CSSを作る

「管理画面」→「 デザイン」→「 カスタマイズ」 →「 デザインCSS」にCSSをコピペして貼り付けます。

.archive_copy_btn {
  text-align: center;
  margin-bottom: 2em;
}
.copy_btn {
  background-color: #efefef;
  cursor: pointer;
  border: none;
  padding: 8px 15px;
  font-size: 14px;
  color: #333;
}
@media (min-width: 768px) {
  .copy_btn:hover {
    opacity: .7;
  }
  .copy_btn:active {
    background-color: #999;
    color: #fff;
  }
}

一応できあがったのですが、iPhoneやiPadだと2回タップしないと動いてくれないのが今困っています。

以前から、hoverを設定するとiPhoneやiPadでタップした時に1回目が反応しないバグがあるというのは知っていて、@mediaで768px以上にしかhoverはつけないように気を付けていたのですが、それでも2回タップが必要みたいなんです。

buttonがダメなのかしら。

どなたかわかる方がいらっしゃったらコメント欄にでも教えていただけると嬉しいです。