はてダ内ブックマークレット有効化Greasemonkey
それすぐ実行!JavaScript! - IT戦記を見ながら、ブックマークレットが貼れないはてなダイアリーは不便だと思いました。*1
そこで、Greasemonkey。
動作
中身が"javascript:"で始まるpreタグをdocument内から探して、内容をAタグで囲んでブックマークレット化させます。
同じくamachang氏作のHDJSExecuterのブックマークレット版です。
Greasemonkeyのみじゃなく、Trixieでも動作します。OperaのUser JavaScriptでも多分いけます。
ソースは以下の通り
// ==UserScript== // @name Hatena Diary Bookmarket Activator. // @description Replace Bookmarklet written in the PRE tag on Hatena Diary to executable A tag. // @namespace http://d.hatena.ne.jp/sawat/ // @include http://d.hatena.ne.jp/* // @include http://*.g.hatena.ne.jp/* // ==/UserScript== (function() { var reg = /^\s*javascript\:/i; var pres = document.getElementsByTagName('pre'); for(var i=0,n=pres.length;i<n;i++) { var e = pres[i]; var js = e.innerHTML.replace(/<\/?[^>]+>|\n/gi,''); if (js.match(reg)) { var a = document.createElement('a'); a.innerHTML = js; a.href = a.childNodes[0].nodeValue; a.innerHTML = e.innerHTML; e.innerHTML = ''; e.appendChild(a); } }; })();
サンプル
これ自身をブックマークレット化してみる。
javascript:(function() { var reg = /^\s*javascript\:/i; var pres = document.getElementsByTagName('pre'); for(var i=0,n=pres.length;i<n;i++) { var e = pres[i]; var js = e.innerHTML.replace(/<\/?[^>]+>|\n/gi,''); if (js.match(reg)) { var a = document.createElement('a'); a.innerHTML = js; a.href = a.childNodes[0].nodeValue; a.innerHTML = e.innerHTML; e.innerHTML = ''; e.appendChild(a); } }; })();
改行を取り除くので、頭にjavascript: つけただけでもOK。*2
タグも取り除くので、はてなグループのハイライト付きスーパーpre記法でもOKなはず。(試してません)