mailtoリンクのクリックでクリップボードにコピーする

Ads

Result

mailtoリンクをクリックすると、メーラーを立ち上げずにクリップボードにコピーさせる、というもの
jQueryを使っています

jQuery

$(document).ready(function() {
 
// mailtoリンクにクラスを追加
  $("a[href^=mailto]").wrap('<span class="mailto-wrapper">');
  $("a[href^=mailto]").addClass("mailto-link");
//クリック時にコピーした旨のメッセージ表示
  var mailto = $(".mailto-link");
  var mailtoWrapper = $(".mailto-wrapper");
  var messageCopy = "Click to copy email address.";
  var messageSuccess = "Email address copied to clipboard.";
 
  mailtoWrapper.append('<span class="mailto-message"></span>');
  $(".mailto-message").append(messageCopy);
 
  //デフォルトアクションの無効化
  $("a[href^=mailto]").click(function() {
    return false;
  });
 
 
//クリックでhrefが表示され、'mailto:'を削除
//メールアドレスを変数に格納
  mailto.click(function() {
    var href = $(this).attr("href");
    var email = href.replace("mailto:", "");
    copyToClipboard(email);
    $(".mailto-message")
      .empty()
      .append(messageSuccess);
    setTimeout(function() {
      $(".mailto-message")
        .empty()
        .append(messageCopy);
    }, 2000);
  });
});
 
// from Stack Overflow.
// https://stackoverflow.com/questions/33855641/copy-output-of-a-javascript-variable-to-the-clipboard
// email変数をクリップボードにコピー
function copyToClipboard(text) {
  var dummy = document.createElement("input");
  document.body.appendChild(dummy);
  dummy.setAttribute("value", text);
  dummy.select();
  document.execCommand("copy");
  document.body.removeChild(dummy);
}

html

<p>Try it out here: <a href="mailto:email@gmail.com">email@gmail.com</a>.</p>

via

Copy mailto: email to clipboard