JavaScript:foxyGesture userScript formatLink
Firefox 68 quantum にアップデートしたら、長らく使っていたアドオン「MakeLink」がと使えなくなった。代替のアドオンを探すが良いのがない。ブックマークレットで同じようなことが出来ると分かったので作ったが、コンテンツセキュリティポリシー (CSP)に反するので、javascriptのインライン摘要がブロックされましたって、ページがあって使えない場合があった。例えばGitHub。ので、結局Foxy Gestures のユーザースクリプトの方が便利だった。
foxyGestureのオプションの詳細で、clipboardWrite APIパーミッションの追加をする必要がある。
- ジェスチャーだけだと -> Jekyll Link
- Ctrlキーを押しながらジェスチャーで -> WiLiKi Link
がクリップボードにコピーされる。
ジェスチャーの開始位置によって、内容が変わる。
- img タグ -> img Link
- a href タグ -> linkHref と linkText での Link
- それ以外(テキストが選択されている場合) -> ページのURLと選択テキスト での Link
- それ以外 -> ページのURLとTITLE での Link
let d = document,
e = data.element,
href = e.linkHref,
text = e.linkText,
src = e.mediaSource,
ctrl = mouseDown.ctrlKey,
select = window.getSelection().toString();
function cp(str) {
let t=d.createElement("textarea");
t.value=str;
/* console.log(t.value);*/
d.body.appendChild(t);
t.select();
d.execCommand("copy");
t.remove();
}
if(ctrl){/* WiLiKi */
if(src){cp(`[[$img ${src}]]\n`);}
else if(href){cp(`[${href} ${text}]\n`);}
else if(select){cp(`[${d.URL} ${select}]\n`);}
else {cp(`[${d.URL} ${d.title}]\n`);}
}else{/* Markdown */
if(src){cp(`<figure><img src="${src}">\n<figcaption></figcaption></figure>`);}
else if (href){cp(`[${text}](${href})\n`);}
else if(select){ cp(`[${select}](${d.URL})\n`);}
else {cp(`[${d.title}](${d.URL})\n`);}
}