MT4 beta5: mt.js の改修一通り完了

MT4 beta4: mt.jsを思いっきり改修してみた (cefa::blog) の続きです。

課題だった ただIEだとonclickイベントからの匿名コメントフォームの呼び出しができないみたい の解決策が見つかったという話。

via
IE の getAttribute / setAttribute: Days on the Moon

この (手抜き) 実装が原因で、getAttribute / setAttribute で class 、style 、イベント属性などを操作できないというバグが IE にはあります。具体的には以下のようにしなくてはいけません。

…という事で解決策まで提示されていたので大変助かりました。具体的には onclick の部分を書き換えるのですが、Function() から関数を呼び出そうとすると Firefox 側が臍を曲げてしまったので結局ブラウザを判別(この場合はIEとその他)して処理を分けることにしました。

if (document.documentElement.getAttribute("style") == document.documentElement.style) {
a[2].setAttribute('onclick',new Function('showAnonymousForm();'));
} else {
a[2].setAttribute('onclick','showAnonymousForm();');
}

これで一応は希望の動作をしたというわけで改修完了です。