2010年5月17日月曜日

FireFoxでは document.all が使えないことを今さら知りました

会社のWEBページを触っていて、機能として「簡易見積もりシミュレーション」(製品の欲しい機能にチェックしたら見積もり金額が表示される簡単なもの)をJavaScriptで書いていた。

ChromeとIEで動作確認して、最後にFireFox(ボクは何だか知らないけどFireFoxがあまり好きじゃない)で動作確認したら、動かない。
何度「見積もる」というボタンを押しても「0円」のまま。
これは非常にマズイ。お客さんに「だって0円って書いてるじゃないか、これ、0円でくれよ!」って言われることウケアイ。

というわけでFirebugsで見たら「document.all is undefined」とか言われてる。

「いやいや、未定義も何も、こっちで勝手に定義したらあかんやろ!」とニヤニヤしながら(今となっては恥ずかしい思い満開)意気込んでググると、「document.all」ってIEの仕様(実装)なんですね…。W3C標準じゃなかったんだ・・・と今頃知って、愕然としてしまいました。
(過去にめっちゃ使ってる)

で、getElementByIdとかgetElementByTagNameを使えよ!ということだったんで、きちんとタグ(要素)にidを振って、 document.getElementById("num").value とかで値をとったりできるようになり、無事に「0円見積もり」という爆弾を修正することができました。

しかし、もう何年も前から常識だったようで、「技術への~」とかブログタイトルにしているのが恥ずかしくなりました。今から隠れますのでしばらく探さないでください。

4 件のコメント:

荒野草途伸 さんのコメント...

どこの技術系サイト見てもブラウザ依存だなんて一言も書いて無くて、しかもちゃんと動くときもあるので、突然動かなくなったときは頭抱えました。
テスト用のHTMLいくつも作って、そのうちIEでだけ動くものがあるという事に気づいて、ググって、このページ見つけて、ようやく合点がいきました。
貴重な情報ありがとうございます。

Takamitsu Kashiwa さんのコメント...

荒野草途伸さん
コメントありがとうございます!
少しはお役に立てたようで良かったです。

(昔の)IEの独自実装にはホント頭を抱えさせられますよね...orz
このページは今でも常にアクセス数が多いので、苦労されている方は多いようです…。

マモ さんのコメント...

はじめまして。
私こそ、「今さら」です。
本日、検索の結果、このブログで原因を知りました。
Chrome,Opera,Safariでは問題なく動作しましたので・・
まさか、MSの独自実装とは・・盲点でした。
ありがとうございました。

Takamitsu Kashiwa さんのコメント...

マモさん、コメントありがとうございます。
無事IEでも動くようになったようで、良かったです!

最近はIE(MS)も標準化に寄ってきてくれてますが、とはいえ、過去の遺産と呼ぶにはあまりに大きすぎるシェアを持っているので、まだまだ厄介ですね…