Chromeのstable release 17.0.963.65が、5日に出ていた。
Chrome Releases: Chrome Stable Update
しかし、なぜかアップデート出来ない。どうしてかと思ったら、深刻なバグがあったかららしい。
GetElementsByClassNameで返されるNodeListはliveであり、動的に変更される。例えば、クラス名を変更したらNodeListから削除される。なんとも実装が面倒そうな仕様だが、そういう仕様になっているのだから仕方がない。
こういう仕様のもとでNodeListを実装しようとしたら、二度目以降の要求に対しては、あらかじめ内部的に確保しておいた「何か」を渡すような実装になっていてもおかしくない。なぜなら、NodeListは生きているからだ。Chromeはどうもそういう実装なのか、クラス名を動的に変更した後、二度目以降のGetElementsByClassNameで、変更が反映されることがなくなってしまうらしい。そのバグが重複として上がっている。
17.0.963.65がこの挙動をぶち壊してしまったので、急遽止めてまで修正していたらしい。いまは、17.0.963.66が出ている。
ちなみに、新しめのAPIであるquerySelectorAllの返すNodeListはliveではない。
さすがに、こんな仕様には懲りたのだろう。新しいAPIにも従来の変な挙動を持ち込む必要はない。
No comments:
Post a Comment
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.