Firefox 3.0 b2
いれた。常用プロファイル続行
Tree Style Tab と Stylish は install.rdf のバージョン書きかえでうごく
いれた。常用プロファイル続行
Tree Style Tab と Stylish は install.rdf のバージョン書きかえでうごく
このスクリプトを script appendChild するようなブックマークレットかけばブックマークレットにもなるとおもう。図みたいなの書きたいときはデフォのキャンバスだとかなしいのでかいてみた。(書きはじめてからのリサイズはできません)
Greasemonkey からページ内コンテキストでJS実行するときのイディオム (こうするとシンタックスハイライトきかしたまま自由な感じに書ける)
location.href = "javascript:"+encodeURIComponent(uneval(function () {
...
}))+"()";
縮小されるときは fotolife の設定確認
オフィシャルで対応されたのでもう必要ありません。
Reply がついたエントリや、あるエントリへの Reply の本文部分をクリックで全部展開してツリーにします。
親と子は同時に展開を開始しますが、二度目以降の展開は一応 1sec ウェイトを入れてます。
複数 reply のとき順がくずれると思うんですがあんまりそういうケースないのでなんもやってないです (テストケースがみつからなかったし、そんなのわざわざつくるのもアレ)
HTTP リクエストが一部の展開で劇的に減るはずです (キーワードページでの展開はだいたいリクエストなしでいけるかな)
二個以上の返信ついてる場合とかはてスタが多重ロードされますがめんどくさいので気がむいたら対応します。
あとたまに Node cannot be inserted がでるかもしれませんが安定して再現するページがみつからないので放置してます。
スター適用するとき一時的にエントリ1つを唯一子にもつ親をつくることで重複しないようにしました
Expand リンクをつけるようにした。
(他のスクリプトより先に読みこむ必要あり)
オリジナルの postDrawing を上書きして、イラスト投稿のときに、そのままポストではなくテキストとして URL を挿入する。
最初めんどくさがって
with (unsafeWindow) {
Hatena.Haiku.EntryForm.postDrawing = function (uri) {
if (!uri) return;
var form = Hatena.Haiku.EntryForm.currentForm;
if (!form) return;
form.textarea.value += uri;
form.submit.disabled = false;
form.showTextForm();
// form.form.submit();
};
}とかやってたんだけど、これだと他のユーザJSがこの関数を実行しようとしたとき (?) にセキュリティエラーがでてしまう。
javascript: によるロードとかいろいろためしたけどうまくかなくて、結局こうしてみたらうまくいった……
fotolife は容量制限が厳しくて、落書きを大量に投稿する、というときちょっと不安 (制限に逹っしたとき、消さないといけないなぁという不安) があるので、tumblr を使うようにする userscript を書きました。(月別の容量制限とかならいいんだけどなぁ)
(イラスト投稿を確実にする GM より前に実行する必要があります)
といっても、tumblr はいまいち安定感 (いろんないみで) がないように思えるのでなんともいえない……
URL をうけとって保存してくれるサービス/そういうAPIがあるサービスなら簡単に対応できるんですが、そういうのあんまないっすね……
postDrawing がよばれないことが多々ある、そういうときはブックマークレットでよぶ
javascript:Hatena.Haiku.EntryForm.postDrawing("fotolife の該当画像の URL");
書きはじめてから一定時間おきに fotolife の feed を監視して投稿する、みたいなのをつくろうとおもったけど、二重投稿とか考えるのがめんどくてやめた……
なぜかわからないけど unsafeWindow 中のオブジェクトの prototype がとれないっぽい……
unsafeWindow.Hatena.Haiku.EntryForm.prototype //=> undefinedでもって回避しようとして以下のようなコードを書いてみたけど
function unsafeeval (code) {
var d = new Deferred;
unsafeWindow.___eval = arguments.callee;
arguments.callee.callback = function (r) {
delete unsafeWindow.___eval
d.call(r);
};
unsafeWindow.location.href = "javascript:"+encodeURIComponent("___eval.callback("+code+")");
return d;
}
unsafeeval("Hatena.Haiku.EntryForm.prototype").
next(function (proto) {
alert(proto.showDrawForm); // とれてる
proto.showDrawForm = function () {
alert("aaa"); // 実行されない orz
};
alert(proto.showDrawForm); // かきかえはできてる
});って感じになる。javascript:alert(Hatena.Haiku.EntryForm.prototype.showDrawForm) するとちゃんと設定された関数が表示されるんだけど、実行はされない (もとの関数はもちろんよばれない)。だれかたすけて>< これは Fx のバグ?
prototype 以外への書きかえはもちろんうごく……
postDrawing がたびたびよびだしされないので、fotolife を GM_xhr で監視して投稿するようにするスクリプトです。
流れは
tumblr に投稿しなおすスクリプトより後に実行する必要があります。
なかなか投稿できないなぁってときは API がエラーだしていたりするので http://f.hatena.ne.jp/rkatom/feed にアクセスして確認してみるとよいかもです