prototype.js
firefoxだと重くないのに、IEだと激重。 getElementsByClassName()は重すぎだから、getElementsByTagName()で絞ってからhasClassName()で検索すると早くなった。 あとEvent.observe(element, 'mouseover', func) が重い。 軽くするためにはHTMLのタグに直接…
JavaScriptでだいぶハマってた。 単純な文字列置換でもミスるし・・。Ajaxで取ってきたテキストがIEだとタグ名が大文字になるのね。 あとinnerHTML。 prototype.jsを使うとHTMLElementが拡張されている。 タグには _extended="true" が追加されている。 その…
bindAsEventListener()で追加の引数を受け取れないと悩んでいた。最新のリビジョンを見たら理解した。*1 最新バージョンではcall()を使わずにどちらもapply()でやっていた。 で、やっぱりbind()ソースの args.concat($A(arguments)) の部分が理解できない。a…
hawkさんにコメントをいただいたのでコードの見直し。 どの部分で問題になってたのか忘れてしまったorz でも数カ所で obj.func1 = function(element){ var obj = this; Event.observe(element, 'onclick', function(e){ obj.func2(); }); } obj.func2 = func…
onsubmitなどでreturn false;を返すと、デフォルトの動作をキャンセルできる。 で、これもEvent.observe()では無効なのか。 同じイベントに何個でもハンドラを登録できることを考えると普通の動きなのかな。
hawkさんにかなり助けてもらいつつ、コードが綺麗になってきたのでまとめてみる。 Ajaxイン・アクションの復習も兼ねて。 理解できてくると段々楽しくなってくるね。ブラウザの挙動の違いは困るけどprototype.jsが結構吸収してくれてるぽい。 HTMLからJavaSc…