Safari や Chrome などのブラウザでWebページを見ていて、それをシェアしたくなった時のためのブックマークレットです。
通常のページであれば title タグの内容と URL をコピーし、今見ているページが Amazon だったら単に title タグの内容をコピーするのではなく商品名と URL をコピーし、URL の最後に Amazon アソシエイトのトラッキングIDを追加します。
ブックマークレットそのものにツイート機能はありませんので、生成された文字列をコピーし、Echofon for Mac 等の Twitter クライアント(日本語 URL をエンコードしてくれる機能のあるクライアント)でツイートする必要があります。
Chrome 上で使用した場合は、日本語は自動的にエンコードされます。
なぜこのブックマークレットを作ったかというと、Safari で今見ているページのタイトルと URL を私好みの形式で取得できる拡張が見つからなかったのと、Amazon 商品ページにあるツイートボタンは時間がかかりすぎるからです。
標準では、次のような形式の文字列をプロンプト内のテキスト入力エリアに表示します。
"タイトル" URL
使い方
ブックマークレットのソースは以下のとおりです。
こちらのソースをすべて選択し、コピーしておいてください。
javascript:
if(document.URL.indexOf('amazon.co.jp') == -1){
prompt('コピーしてください','"'+document.title+'"'+'%20'+document.URL);
}
else {
title = document.getElementById('btAsinTitle').innerText;
param = (document.URL.indexOf('?') == -1) ? '?' : '&';
prompt('Amazon mode','"'+title+'"'+'%20'+document.URL+param+'tag=example-22');
}
ブラウザで適当なページをブックマークし、そのブックマークを編集、URL の欄にコピーしたものをペーストし、OK ボタンを押します。
解説
ブックマークレットは、先頭に javascript: と書いておく必要があります。それ以降は通常の JavaScript と同じです。
javascript:
このブックマークレットは、URL に amazon.co.jp が含まれるかどうかで大きく動作が変わります。
if(document.URL.indexOf('amazon.co.jp') == -1){
// 処理
}
else {
// 処理
}
Amazon の場合は、title をコピーするのではなく、商品名の部分をコピーします。
商品名は <span id=”btAsinTitle”> にそのまま入っているので、document.getElementById(‘btAsinTitle’).innerText でそれを取得します。
title = document.getElementById('btAsinTitle').innerText;
Amazon の場合、URL に ? が含まれない場合は ?tag=トラッキングID のように、? が含まれる場合は &tag=トラッキングID のようにします。
これは if 文だと長くなるので、三項演算子で処理しています。
param = (document.URL.indexOf('?') == -1) ? '?' : '&';
prompt('Amazon mode','"'+title+'"'+'%20'+document.URL+param+'tag=example-22');
注意点
Amazon のトラッキングIDをご自分のものに変える場合は、example-22 部分を変更してください。
追記(2013/11/25)
<a>タグを生成するバージョンも制作しました。
target=”_blank”(別のタブで開く)付きです。
javascript:
if(document.URL.indexOf('amazon.co.jp') == -1){
prompt('コピーしてください',''+document.title+'');
} else {
title = document.getElementById('btAsinTitle').innerText;
param = (document.URL.indexOf('?') == -1) ? '?' : '&';
prompt('Amazon mode',''+document.title+'');
}