シェアボタンと一緒に最近よく見かけるアレ。
どういうものか
SNSのシェアボタン群はよく見かける。だけどそれを使うよりもURLコピペしたほうが楽じゃんみたいなのがある。だからかはしらないけど、「URLをコピー」のボタンをよく見る。実際、あると便利。
逆に当初からある、「メールで送る」は必要に駆られたことが一切ない。使ってる人いるんだろうか。
作る
<div class="url">
<input type="text" value="【URL】" readonly>
<span id="share_urlCopy"></span>
<span class="copied">copied this url!</span>
</div>
URLを表示する枠、コピーするボタン、コピーしたよって表示するやつの3つ。それぞれにjsでギミックを付与する。
$(function(){
//inputクリックしたら全選択
$('.url input').focus(function(){$(this).select();});
//クリップボードにコピー
$('#share_urlCopy').on('click',function(){
$('.url input').select();
document.execCommand("Copy");
$('.url .copied').fadeOut(function(){$('.url .copied').fadeIn()});
})
})
jQueryライブラリは別で読ませといてください。
コピーに関しては意外とアナログな組み方になる。
直接クリップボードにはぶち込めないらしく、一旦選択動作をかませる必要がある。ということでinputを活用するんだけど、どうせ設置するなら表示させて、ボタン押さなくても直接コピーできるようにで最初に全選択を仕込んである。
コピーしたタイミングでなにもないとちゃんとコピーできたか怪しいんで、alertもしくはhtml上でコピー済みが分かる仕組みを付けると親切。alertは閉じるのがめんどくさいから今回はHTMLで表示するギミックをつけた。cssでdisplay:none;をやっておけばOK。コピー後もう一度コピーしたら点滅するようにしてあるんで、使い勝手は悪くないと思う。
装飾についてはそれぞれのアレってことで割愛。
ちょっとだけ言うと、URLがinputをぶち抜いたら末尾が「…」になるようにしておくのがいいです。
input{
text-overflow: ellipsis;
}
以上。
20240702追記:別の方法
これで
<p>aaaaaaaaaaaaaaaaaaaaaaa</p>
<button type="button">コピーする</button>
こう。
$(function(){
$('button').on('click',function(){
navigator.clipboard.writeText($('p').text());
})
});
こっちの方がいいですね。
コメント