はてなブックマークに登録するブックマークレット
はてなブックマークを簡単に行うブックマークレットが、公式で紹介されている。しかし iPhone Safari で上手く動かなかったので調べてみた。
上のページで紹介されているブックマークレットを読み解くと、次のスクリプトを読み込んでいる。
中身はこのようなコードだ。
(function() {
var baseURL = 'https://b.hatena.ne.jp';
var url = baseURL + '/my/add.confirm?url=' + encodeURIComponent(location.href);
window.open(url, '_blank').focus();
})();
なるほど、だったらこのコードを直接ブックマークレットとして動かせば良いな。同様のことを考えている方も既にいた。
window.open()
だと上手く動かない場合もあるので、location.href
を書き換えるバージョンも用意してみた。
// `window.open()` バージョン
javascript:(o=>o('https://b.hatena.ne.jp/my/add.confirm?url='+encodeURIComponent(location.href)))(u=>window.open(u,'_blank',''));
// `location.href` バージョン
javascript:(o=>o('https://b.hatena.ne.jp/my/add.confirm?url='+encodeURIComponent(location.href)))(u=>location.href=u);
o
という仮引数でページ遷移の関数を組み立てている。open
的な意味合い。
const open = (url) => { window.open(url, '_blank', ''); };
const open = (url) => { location.href = url; };
このいずれかの関数を Minify して渡している。o()
関数を実行するだけの本体部分はそのままに、引数部分で定義した関数を差し替えるだけで、window.open()
を使うか location.href
を使うか調整できるようなコードにしてみた。