作成動機: iPhoneでいま見ているWebページのタイトル・URL・選択テキストをさくっとコピーしてSNSに投稿したい

このブックマークレットを使うと、選択したテキストを「」で囲み、ページタイトルとURLを一緒にクリップボードにコピーできる。
コピーが成功すると、画面右下に「Copied to clipboard」または「Exec command copy」と表示する。

以下はクリップボードにコピーされるフォーマット。


「{選択テキスト}」
{空行}
{タイトル} {URL}

以下がブックマークレット本体。ブックマークを作って、この内容をURLとして設定する。
ちなみに、このコードは ChatGPT にほとんどの部分を作ってもらった。


javascript:(function(){
function getSel(){
  var s="";
  try{s=window.getSelection().toString();}catch(e){}
  if(!s){
    var a=document.activeElement;
    if(a && ((a.tagName==="TEXTAREA")||(a.tagName==="INPUT"&&/text|search|url|tel|password/i.test(a.type)))){
      s=a.value.substring(a.selectionStart||0,a.selectionEnd||0);
    }
  }
  return s||"";
}
var sel=getSel(), t=document.title||"", u=location.href;
var txt = (sel ? "「" + sel + "」\n\n" : "") + t + " " + u;

function show(msg){
  var d=document.createElement('div');
  d.textContent=msg;
  Object.assign(d.style,{
    position:'fixed',right:'10px',bottom:'10px',
    background:'#000',color:'#fff',padding:'8px 12px',
    borderRadius:'6px',zIndex:2147483647,opacity:0,
    transition:'opacity .2s'
  });
  document.body.appendChild(d);
  requestAnimationFrame(()=>d.style.opacity=1);
  setTimeout(()=>{d.style.opacity=0;setTimeout(()=>d.remove(),300)},1500);
}

if(navigator.clipboard && navigator.clipboard.writeText){
  navigator.clipboard.writeText(txt).then(()=>show('Copied to clipboard')).catch(fallback);
}else fallback();

function fallback(){
  var ta=document.createElement('textarea');
  ta.value=txt;
  ta.style.position='fixed';
  ta.style.left='-9999px';
  document.body.appendChild(ta);
  ta.select();
  try{
    document.execCommand('copy');
    show('Exec command copy');
  }catch(e){
    alert(txt);
  }
  ta.remove();
}
})();

iPhone Safari はブックマークまでたどり着くのにまあまあ近いので使いやすいけど、iPhone Chrome はブックマークまでが遠くて使いづらい。

ブックマークレットではなくて iPhone のシェア機能でうまく他のアプリにタイトルとURLを送ってくれればいいんだけどね・・・

いま見ているWebページのタイトルとURLをSNSに投稿したい。
nilog: いま見ているWebページのタイトルとURLをSNSに投稿したい。 iPhone 共有機能を比較する。 iPhone Safari から Tootle には、タイトルとURLを送ることができる。 iPhone Chrome から Tootle には、URLだけを送ることができる。 (2025-10-22)

Posted by NI-Lab. (@nilab)