探しても見つからなかったので作ってみました。
中身はこんな感じ。
equalsとsameはどっちのキーでも補完したかったので2つずつあります。
探しても見つからなかったので作ってみました。
中身はこんな感じ。
equalsとsameはどっちのキーでも補完したかったので2つずつあります。
Pool.jsのバグを何とかしたい。
Pool.jsは実行元の関数オブジェクトのプロパティに__pool__
として自身のインスタンスを保存、その際関数オブジェクトはarguments.callee.caller
で取得しています。この方法は呼び出し元が関数やオブジェクトの時は問題なかったけど、クラスのインスタンスの場合挙動がおかしいことに気付いて困り中。クラスの場合、arguments.callee.caller
がインスタンスの関数オブジェクト = そのコピー元のprototypeの関数オブジェクトなので
クラスのインスタンスを跨いでキャッシュが共有されてしまう。
ことになってしまいます。新鮮だけど使いにくい。確認コードはこんな感じ。
Foo = function() {};
Foo.prototype = {
test: function() {
new function() { arguments.callee.caller.prop = 'hello!'; };
}
};
foo = new Foo;
foo.test();
alert(foo.test.prop); // "hello!"
alert(Foo.prototype.test.prop); // "hello!"
alert(foo.test === Foo.prototype.test); // true
とりあえず失敗するテストだけ書いておいた。明示的にコンテキストを指定しないといけないのかなぁ・・。
09102901 Halloween
Flash側のメソッド(ExternalInterface.addCallback
)にplay
、stop
を宣言していたら動かない。ExternalInterface.addCallback IE エラー « Hyhy’s Weblogにある
ExternalInterface#addCallback で追加した関数名が、そのコールバックを呼び出した場所の this のプロパティ、プロパティチェインにその関数名を含む場合、エラーになる。
これに引っかかると思われる。JSでは宣言していないのでIEに何かあるんだろう・・。この仕様は危なすぎる。解決後に同じ事書いてるブログを発見。IE6で特定の名前のメソッドをExternalInterface.addCallbackできない - holidays-l開発ブログ
FxはExternal Interfaceするflashを表示領域内に置かないと初期化処理が始まらずメソッドにアクセス出来ない。たぶん画面外のflashは読み込まないように最適化されてるっぽいのが原因。普通は問題にならないけど1 pxのflashとか使うとありがち。今日のように・・。
object要素にCSSを指定するとバグるので、その親の要素に指定して画面内に置く。
$('<div/>')
.css({
position: 'absolute',
top : $(window).scrollTop(),
left : 0
})
.appendTo('body')
.fl({ ... });
$.fl
はSWFObjectのラッパーです。gistにあるよ。
XPathを調べる時に毎回$XをFirebugのコンソールにコピペしていたのでブックマークレットにした。読み込んでいる$Xはos0xさんのvery simple $X。
MEGAUPLOAD側に修正が入ったため2010-02-26現在この方法は使えません。
hail2u.net - Weblog - MEGAUPLOADから簡単にダウンロードがそのまま取り込めそうだったので入れました。
このバージョン(0.5)からdocument内のリンク、ボタンをXPathで探す方法に加えて、URLを正規表現で置き換える方法が追加されます。SITEINFOの指定方法はMEGAUPLOADの指定を参考にして下さい。
感じで指定します。コード的にはこんなです。
location.href = location.href.replace(new RegExp(url), replace_url);
FirefoxにはReblogCommandという、キー一発でリブログしてくれるリブログ生活にはなくてはならないGMがあるのですが、GreaseKitの制限によりSafariでは動きません。くやしい>< でもリブログ出来る範囲をTumblr内に限定すれば動きそうだったので(クロスドメイン制限が問題なのです)、Dashboard限定でSafariで動くバージョンを作ってみました。
標準でTumblrのDashboardにその場でリブログするボタンを追加します。
oAutoPagerizeがインストールされていると足されたページにもボタンを追加します。また、Minibufferがインストールされていると、tキーでリブログしたりpキーでまとめてリブログしたり出来るようになります。
yksk.tumblr.comみたいなユーザーのTumblelog上では動きません。いいTumblrが見つかったらfollowしちゃえばいいですね!
TomblooにはTumblKitがありますので、合わせて入れるとよいです。これでリブログ用にFirefoxを立ち上げることもなくなるかな。
No Tumblr, No Life!
FirefoxではcreateEvent
で作ったイベントからa要素をクリック出来ないみたいだ・・。a要素の時だけ以前のようにlocation.href
で飛ぶようにしてみた。a要素にtarget属性が指定されてても無視されます。出来るなら統一したいなー。
1.1.2で統一しました。初期化処理をinitMouseEventにしたら上手くいったみたい。今まではinitEventを使っていました。
e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
引数多い。
やっぱりだめみたい。上手く行ったと思っていたのは、そのa要素にonclickイベントが付いていただけだったっぽいです。むー。
あと、期限切れのキャッシュを上手く更新出来ていなかった問題も修正しました。
とらのあなの年齢認証はinput要素のクリックイベントから起動したJavaScriptでクッキーを発行して認証判定する仕組みになっています。今まではリダイレクトURLをa要素から取得していたため、この仕組みに対応出来ませんでした。今回createEvent
でクリックイベントを発行してページ移動を行うように変更したので、とらのあな以外にもクリックで移動、認証するほとんどのサイトに対応出来るようになったはずです:)
drryさんにSITEINFOの正規表現を添削して頂いていました。ありがとうございます。