このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

とある配列をJavaScriptのfor/inで列挙できない:続報

「とある配列をJavaScriptのfor/inで列挙できない、なんで?」の件。

調べているうちに面白いサイトを発見しました→ "... No, Internet Explorer did not handle it properly"

ここには、IEのnavigator.pluginsの不具合(期待どおりではないこと)について書かれていますが、僕の疑問の直接の答えにはなってません。というわけで、結局事情はよくわかりません(セキュリティ関連か、という気もしますが)。

事情はわからなくても、現象として、for/in文で例外が発生することがあるのは事実です。プロパティを隠すのではなくて、プロパティを見ようとすると怒るので、なにか触れて欲しくないトラウマでもあるのでしょう、彼(って誰?)には。

try/catchで例外捕捉しながら列挙した結果はコレ(別ウィンドウに画像)です。例外は、この画面にすべて見えています。clientInformation.plugins, clientInformation.opsProfine, clientInformation.mimeTypes, externalが触れて欲しくないプロパティです。画面の下のほうを見るとわかるように、navigatorはclientInformationの別名です。また、clientInformation.opsProfileはclientInformation.userProfileの別名なので、見ちゃいけないモノのような気もします。

ちょっと驚いたのは、IE6ではdocumentが大域オブジェクト(window)だったってことですね。ファイルシステムシンボリックリンクみたいなもので、名目上(公式)のオブジェクトパスを使っていれば実体がなんであっても関係ないですけど。