• ベストアンサー

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>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1です。当方環境はSleipnir 2.48/IE7でしたが、 こんな記事も見かけました。実験はしていませんが。 記述ミスとかでIEで動作しないという話ではないんですよね?(動作しないのはFirefoxであって。) http://mag.autumn.org/Content.modf?id=20051107135216

bakenshibakenshi
質問者

お礼

himajin100000様、ご教授有難う御座います。 動作しないのはFirefox(当方1.5.0.7)です。 が、お教え頂いた document.documentElement.clientHeightにしますと Firefoxでブラウザのサイズを取得することが出来ました。 が、IEで取得出来なくなりました。

bakenshibakenshi
質問者

補足

大変失礼しました。 IEでも取得することができました。

その他の回答 (2)

回答No.3

IEの標準準拠モードなら var bodyHeight = document.getElementsByTagName("html")[0].clientHeight; でいかがでしょうか。 ちなみに、IEでDOCTYPE宣言がある場合でもXML宣言がある場合は後方互換モードになるようです。

bakenshibakenshi
質問者

お礼

matchasoft様、ご教授有難う御座います。 XML宣言がない場合はIE,firefoxとも、OKでした。 XML宣言がある場合はIEはOK、firefoxはNGでした。

回答No.1

Firefox 3.0a1ユーザです。 おっしゃるソースをテキストエディタに貼り付け、hoge.htmlとして保存して開いてみましたがXML宣言の有無に関わらず正常動作してます。 #ところでError Consoleにエラーメッセージの類は出ていませんか?

bakenshibakenshi
質問者

お礼

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なら出来るのかもしれません・・・。

関連するQ&A