Firefox3でprototype.jsのgetElementsByClassName使おうとしてハマってた
Firefox3には、ネイティブでgetElementsByClassNameが入ってて、
prototype.jsのgetElementsByClassNameを使う邪魔をしていた。
両者の使用は下記の通り。
getElementsByClassName(className [, parentElement])
・Firefox3
getElementsByClassName(className)
これでFirefox3で第二引数のparentElementを設定しても無効になってしまってた。
対処法は二つ。
・getElementsByClassNameを使わないようにする
classNameの各タグがspanだった場合、
parentElement.getElementsByTagName('span')で対処できる
・prototype.jsを変更する
削除
if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
追加
document.getElementsByClassName = function(instanceMethods){
こっちのが既存の自分が書いたソースを変えなくてすむ。
firefox3で実装されてるgetElementsByClassNameを無視してprototype.jsのgetElementsByClassNameをオーバーロードするといったカンジ。
ライブラリを変更するのってよくない場合は前者の方法で対処したほうがいいかも。