2006年 04月07日(Fri) [長年日記]
_ [ツッコミレス]まとめて
>イシュ氏
ということは4/8はD-0予選後に狩りですなw
>みやびたん氏
そういう事だから大人しく狩られなさい(ぉ 14日発売予定のFaith stay/knight*1を貸してあげるから(爆)
*1 あまりにアレなのでリンクは貼らない
_ [アニメ](リンク)TVアニメ「涼宮ハルヒの憂鬱」第1話が凄い理由
なつみかん。- TVアニメ「涼宮ハルヒの憂鬱」第1話が凄い理由
へー。まだ第1話みてないけど。昨日indigo氏とskypeで話してたので多少概要は聞いているのですが。原作知らない人はそりゃ面食らっただろうなぁ。ま、とりあえず見てみないことには話が進まないので見てみるか。
_ [プログラム]Javascriptの話
prototype.jsを使ってイベントハンドラを追加する時はEvent.observeを使います。例えばページのロード終了時に関数callbackを呼び出したいならこんな感じ。
Event.observe(window, 'load', callback, false);
じゃあページを閉じた時に後始末をしたい時は以下のように書けば良い筈。
Event.observe(window, 'unload', finish, false);
…だったんですけど、何故かfinishが呼び出されなくて困ってしまいました。
で、いろいろ情報を探して見つけたのが以下のページ。
どうもIEにバグがあって、そのせいでprototype.jsには対IE用のコードが書かれているらしいんですが…。
/* prevent memory leaks in IE */ Event.observe(window, 'unload', Event.unloadCache, false);
これは observe で登録した関数オブジェクトの配列を全て解放してくれている。
つーことはアレか。こっちがunloadを追加しても先にコイツが開放しちゃうから実行されないわけですか。
というわけで、ページの読み込み終了時に
Event.stopObserving(window, 'unload', Event.unloadCache, false); Event.observe(window, 'unload', finish, false); Event.observe(window, 'unload', Event.unloadCache, false);
とか書いてみたら無事finishが実行されましたとさ。
ちなみにEvent.stopObservingってのは追加されているイベントハンドラを取り除く関数です。つまり一度取り除いてから改めて追加しなおしているだけ。
でもこれって呼び出し順が仕様として保障されてるわけじゃないから、あくまで緊急対応に過ぎませんね。
なるべく早めに・・・<br>夜勤明けなので早く帰りたいので・・・<br>Faith stay/knightは買うつもりはないので。