Sep 16, 2005
TBEでタブを並べ替えるとおかしくなる問題3
なんかまた違う問題がポロポロと出てきましたよ?
タブを並べ替えたり消したりしてあれこれしてたらエラーが出るようになって、原因を探っているうちに、どうもタブの配列?がおかしくなってるらしいということに気がついた。gBrowser.mTabs
はアクセスするとgBrowser.mTabContainer.childNodes
を返すgetterになっていて、まあ、この二つは詰まるところ同じ物のように扱ってるんだけど、この、gBrowser.mTabContainer.childNodes
が時々おかしくなるようだ。インデックスの範囲を超えた範囲の要素にアクセスしても、undefined
にならずに、要素ノードを返すことがある。
例えば見た目上は4つのタブが開かれていて、gBrowser.mTabContainer.childNodes.length
を見ても要素の数は4と返ってくるんだけど、gBrowser.mTabContainer.childNodes[4]
にアクセスしたら何故か要素ノードが返ってくる(本当はgBrowser.mTabContainer.childNodes[3]
までにしかアクセスできないはず)。これ、JavaScript 1.6の仕様変更に伴う挙動の変化ですか?
とにかくこのせいで、nodelist[index]
にアクセスしてundefined
が返ってくるかどうかで添え字がインデックスの範囲を超えてるか超えてないかを判別していた部分が誤判定を起こすようになってしまっていた。
こんなの、他にどれだけあるか分からんよ……よう探しきれませんorz
wikieditish message: Ready to edit this entry.