Mozillaで
document.allをサポートしたようだという噂を聞いたので調べてみた。
サポートしたMozillaのバージョンは、Mozilla 1.8a3のテストバージョン。
ですが、現在の最新版のMozilla 1.8a4を、ダウンロードして見てみた。
その前に、リリースノートには、以下のことが書いてある。
Mozilla は、より確実な IE との互換性を目指して、
要素の ID の表示をサポートするようになりました。
これは quirks モードのみで利用可能です。(bug 256932)
ということで、調べてみた結果は
【DOCTYPE指定のXHTML文書】
document.all = undefine
document.layers = undefine
if(document.all) = false
if(document.layers) = false
【DOCTYPE指定なしHTML文書=quirks モード】
document.all = [object HTML document.all class]
document.layers = undefine
if(document.all) = false
if(document.all('IDname')) = true
if(document.layers) = false
document.all("idname") = [object HTML DivElement]
document.all("idname").offsetTop = 正しい値
document.allを使用すると、以下の警告がJavaScriptコンソールに出ます。
→Warning: Non-standard document.all property was used.
Use W3C standard document.getElementById() instead.
ということで、
今まではクロスブラウザ的に使う場合に、
普通IEを判断するのに、if(document.all)を使用していたが、
これでは判断できないのね。^^);;
一応、IE専用で書いてあれば、使えそうな感じなので、
自分のローカル環境(WindowsXP)で試してみた。
例えば、「1000本ノック」で動かしてみたが、
Eventプロパティがサポートされていないようなので、
動きませんでした。^^);;
これはバグなのか、仕様なのかすら分からないね。^^;;
でも、「要素の ID の表示をサポート」と言っているので、
これは仕様かな?
なので、Eventプロパティを使用していないDHTML処理で
BayStars Skier のトップページの
ソフトメニュー表示と画像スライダを試してみた。
修正方法は、単純にDIV要素で使用しているID=menuを使い、以下のようにした。
if(document.all) → if(document.all('menu'))に置換え。
その結果は、
正式版のMozilla 1.6に比べて非常に遅いけど。。。。動いた。^^)
なんで、
このような形(if(document.all)→false)で実装したのかは、
仕様のようですね。IE専用のHPだけを対象にしたようです。
理由はここに書いてありそうな感じだけど、
英語が分からないので???
また、どうしてサポートしたのかも、調べてないので分かりません。^^);;
ここの記事に何か意味ありげなことが。。。。。
ここの発言にもあるみたいだけど、
要するに、Mozillaは、殆ど使われてないので、
Mozillaを頑張って開発しても、所詮井戸の中の蛙じゃないかと。
一番使われているIEの専用コードのあるHPを表示させてあげなくちゃ、
Mozillaは、日の目を見ないんじゃないかと。
なのかな?
でも、今となっちゃ。WindowsPCにIEが標準で付いてくる現実を
考えれば、こんなことしても、日の目は見れないんじゃないかと。
なので、企業向けに出すというアイデアなの??
でも、まだテストバージョンとあって、
完全にIEに対応したとは分からないし、
どこまで対応するのかも、よく分からないし、
バグ報告ってあるのでしょうか?
まあ、IE専用ページには興味ないので、
これには関わらない方がいいみたい。^^);;;