- ベストアンサー
DOCTYPE宣言とdocument.body.clientHeight
お世話になります。 ブラウザのサイズを取得するにはどうすればよいのでしょうか? document.body.clientHeightで取得出来るのは分かりましたが DTDにより動作したり、しなくなるのも分かりました。 ×動作しない <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ○動作する <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 後者のものですとIEでは動作しますが、firefoxでは動作しません。 何か対処法は、御座いませんでしょうか? 一番望む形は <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> の宣言で、ブラウザサイズが取れるようになるのがベストです。 CSSを使用しているので<?xml version="1.0" encoding="UTF-8"?>を入れると 表示モードが互換になるので・・・。 対応したいブラウザはIE6.0、firefox,Safariです。 一応ソース <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> function init(){ var bodyHeight = document.body.clientHeight; alert(bodyHeight); } </script> </head> <body onload="init();"> <div> ほげ </div> </body> </html>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。当方環境はSleipnir 2.48/IE7でしたが、 こんな記事も見かけました。実験はしていませんが。 記述ミスとかでIEで動作しないという話ではないんですよね?(動作しないのはFirefoxであって。) http://mag.autumn.org/Content.modf?id=20051107135216
その他の回答 (2)
- matchasoft
- ベストアンサー率54% (20/37)
IEの標準準拠モードなら var bodyHeight = document.getElementsByTagName("html")[0].clientHeight; でいかがでしょうか。 ちなみに、IEでDOCTYPE宣言がある場合でもXML宣言がある場合は後方互換モードになるようです。
お礼
matchasoft様、ご教授有難う御座います。 XML宣言がない場合はIE,firefoxとも、OKでした。 XML宣言がある場合はIEはOK、firefoxはNGでした。
- himajin100000
- ベストアンサー率54% (1660/3060)
Firefox 3.0a1ユーザです。 おっしゃるソースをテキストエディタに貼り付け、hoge.htmlとして保存して開いてみましたがXML宣言の有無に関わらず正常動作してます。 #ところでError Consoleにエラーメッセージの類は出ていませんか?
お礼
himajin100000様、ご教授有難う御座います。 >#ところでError Consoleにエラーメッセージの類は出ていませんか? firebugでもエラーメッセージは出ていません。 ANo2より、document.documentElement.clientHeightで XML宣言なしでIE、Firefoxで取得することが出来ました。 Firefoxは私のバージョンが古かったので少し上げまして、 1.0.7にしました。(当サイト対応ブラウザが1.0.7からでした。失礼しました。) 整理しますと document.body.clientHeightではIE、Forefox共に取得することが出来る。 document.documentElement.clientHeightではIEで取得可、Firefox(1.0.7)取得不可。 himajin100000様のFirefox 3.0a1なら出来るのかもしれません・・・。
お礼
himajin100000様、ご教授有難う御座います。 動作しないのはFirefox(当方1.5.0.7)です。 が、お教え頂いた document.documentElement.clientHeightにしますと Firefoxでブラウザのサイズを取得することが出来ました。 が、IEで取得出来なくなりました。
補足
大変失礼しました。 IEでも取得することができました。