引用ブックマークレット Ver.2
Created at 2013-04-02 Tue 11:47:49
引用ブックマークレット Ver.1 の続き。今回は Ver.2 を作ります。
テキストを選択していないとき、Ver.1 では「引用文を選択してください」というアラートを出した。しかし、この段階でページのタイトルと URL は取得できているわけだ。だったらリンク用のタグを生成したら便利じゃなかろかって考えて、これを Ver.2 とすることにした。
- テキストが選択されている
- Ver.1 - 引用タグを生成
- Ver.2 - Ver.1 と同じ
- テキストが選択されていない
- Ver.1 - アラートを出す
- Ver.2 - リンクタグを生成 « ここが今回の課題
リンクタグの書式はこうなる。単純すぎて説明するほどではないね。
<a href="引用元URL">引用元タイトル</a>
以下は Ver.1 と比較した結果です。作業ファイルでの比較なので改行されてますが、使用するときには改行を削除します。Ver.1 のスクリプトは前回の記事を見てください。
~$ diff -u quote1.work quote2.work
--- quote1.work 2013-04-02 08:44:22.361440714 +0900
+++ quote2.work 2013-04-02 09:23:36.597370057 +0900
@@ -1,6 +1,5 @@
javascript:(function(){
-var a='引用文を選択してください',
-b='Source: ',
+var b='Source: ',
c='コピーしてブログに貼りつけてください',
d=document,
s=d.createElement('script'),
@@ -10,13 +9,13 @@
v=(d.all)?d.selection.createRange().text:(w.getSelection()+'');
s.charset='UTF-8';
if(!v){
-alert(a);
+var q='<a href="'+u+'">'+t+'</a>'
}else{
var q='<blockquote cite="'+u+'" title="'+t+'">\n'+
'<p>'+v.replace(/\n/g,"<br/>")+'</p>'+
'\n</blockquote>\n'+
'<p><cite>'+b+'<a href="'+u+'" target="_blank">'+t+'</a></cite></p>';
-s.src=w.prompt(c,q);
}
+s.src=w.prompt(c,q);
document.body.appendChild(s)
})();
出来上がったブックマークレットが下のリンク。Chromium での使用は問題ない。別環境で使えんかったらごめんよ。
今後の課題
Ver.3 になるような大きな変更はないと思う。細かい変更はあるので次回は 2.1 になる予定だ。今考えているところを挙げてみる。
- 変数名が適当なのを直す
- 取得した文字列に特殊文字(<,>,&など)が含まれた場合の対応
- Firefox で引用タグの改行が無視されることへの対応
Firefox ユーザじゃないので最後のはあまりつっこむつもりがない。簡単にできるならやります。