Greasemonkey
Greasemonkeyで追加されたReplyボタンだけ取るサンプルです(一応Google Chrome/Opera/GreaseKitも対応)。
setTimeout(function(unsafeWindow){
unsafeWindow.Hatena.Haiku.Pager.addEventListener('loadedEntries',function(div){
var x = document.evaluate('descendant::a[@class="reply"]',div,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
var res = [];
for (var i = 0,l = x.snapshotLength; i < l; i++) {
res.push(x.snapshotItem(i))
}
console.log(res);
},false);
},100,this.unsafeWindow || this.contentWindow || this);
setTimeout(function(unsafeWindow){
unsafeWindow.Hatena.Haiku.Pager.addEventListener('loadedEntries',function(div){
var x = document.evaluate('descendant::a[@class="reply"]',div,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
var res = [];
for (var i = 0,l = x.snapshotLength; i < l; i++) {
res.push(x.snapshotItem(i))
}
console.log(res);
},false);
},100,this.unsafeWindow || this.contentWindow || this);
JavaScript
ECMA-262 3rd Editionでは、{} or {PropertyNameAndValueList} となっていて、最後に,がつく形について書かれていません。
なので、IEがエラー吐くのは仕様的にはおかしくありません。
Operaも9.50以前はIEと同じくエラー扱いでした。
ただ、ECMA-262 3.1 Edition (のドラフト)では{} or { PropertyNameAndValueList } or {PropertyNameAndValueList , } となっていて、最後に,がついてもOKとはっきりと決められました。
なので、できればIE8は対応してほしかったところですね……
なので、IEがエラー吐くのは仕様的にはおかしくありません。
Operaも9.50以前はIEと同じくエラー扱いでした。
ただ、ECMA-262 3.1 Edition (のドラフト)では{} or { PropertyNameAndValueList } or {PropertyNameAndValueList , } となっていて、最後に,がついてもOKとはっきりと決められました。
なので、できればIE8は対応してほしかったところですね……
Greasemonkey
今更なんだけど、Expand replies tree の Expand リンク(ボタン)の href にフイタ
1hydeですね、わかります。
1hydeですね、わかります。
Greasemonkey
あ、いや、なんかこちらこそ申し訳ない。。
ちなみにGoogle Chromeが使っているWebKitはレンダリングエンジンのことで、JavaScriptのエンジンは別物です。そのため、「Safariで動くものはGoogleChromeでも動く」というのはある意味偶然です。
ただ、実際にSafari、Google ChromeのJSエンジンはすごく似ている(ECMAScript++)のと、GreaseKitとGreasemetalの実装もやはり似ています。
なので結局のところ、Safariで動くものはGoogle Chromeでも大抵は動くのでした。
ちなみにGoogle Chromeが使っているWebKitはレンダリングエンジンのことで、JavaScriptのエンジンは別物です。そのため、「Safariで動くものはGoogleChromeでも動く」というのはある意味偶然です。
ただ、実際にSafari、Google ChromeのJSエンジンはすごく似ている(ECMAScript++)のと、GreaseKitとGreasemetalの実装もやはり似ています。
なので結局のところ、Safariで動くものはGoogle Chromeでも大抵は動くのでした。
Greasemonkey
Opera, Safari(GreaseKit), Google Chrome(Greasemetal)で動く、Expand replies treeとautopagerize for haikuあります!!
http://d.hatena.ne.jp/os0x/20071222/1198344919
http://d.hatena.ne.jp/os0x/20071222/1198344919
Opera
FlashのほうをReplyフォームにも対応するとこんな感じ。
javascript:(function(f,h,i,l,_t){i=0;l=f.length;for(;i<l;i++){_t=f[i].innerHTML;f[i].innerHTML='';f[i].innerHTML=_t.replace(/height=\D\d+\D/,'height='+h).replace(/canvasHeight=\d+/,'canvasHeight='+(h-50));}})(Ten.DOM.getElementsByClassName('draw-container'),prompt('height?',300));
javascript:(function(f,h,i,l,_t){i=0;l=f.length;for(;i<l;i++){_t=f[i].innerHTML;f[i].innerHTML='';f[i].innerHTML=_t.replace(/height=\D\d+\D/,'height='+h).replace(/canvasHeight=\d+/,'canvasHeight='+(h-50));}})(Ten.DOM.getElementsByClassName('draw-container'),prompt('height?',300));
Opera
Operaでもサイズを変更できるようにするBookmarklet!
Text:
javascript:(function(f,i,l){i=0;l=f.length;for(;i<l;i++)f[i].setResizer();})(Hatena.Haiku.EntryForm.forms);
Flash:
javascript:(function(p,h,_t){_t=p.innerHTML;p.innerHTML='';p.innerHTML=_t.replace(/height=\D\d+\D/,'height='+h).replace(/canvasHeight=\d+/,'canvasHeight='+(h-50));})(Ten.DOM.getElementsByClassName('draw-container')[0],prompt('height?',300));
Flashのほうは書いてたものが消えるので注意
Text:
javascript:(function(f,i,l){i=0;l=f.length;for(;i<l;i++)f[i].setResizer();})(Hatena.Haiku.EntryForm.forms);
Flash:
javascript:(function(p,h,_t){_t=p.innerHTML;p.innerHTML='';p.innerHTML=_t.replace(/height=\D\d+\D/,'height='+h).replace(/canvasHeight=\d+/,'canvasHeight='+(h-50));})(Ten.DOM.getElementsByClassName('draw-container')[0],prompt('height?',300));
Flashのほうは書いてたものが消えるので注意
Greasemonkey
あれー、でもwrappedJSObjectは関数じゃないから上手くいかないような。
getter/setter(Opera9.5以降)じゃないとダメっぽいです。
getter/setter(Opera9.5以降)じゃないとダメっぽいです。


