2005年11月01日
川俣晶の縁側ソフトウェア技術雑記total 4133 count

ブラウザ間非互換性: Netscape 7.02でclientWidth/clientHeightが動作しないケースがある

Written By: 川俣 晶連絡先

 また遭遇。

 ブラウザ間の動作非互換性です。

 Netscape 7.02でclientWidth/clientHeightが動作しないケースがあります。

検証プログラム §

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>test</title>

<script><!--

function onLoad()

{

    var h1 = document.getElementById('t1').clientHeight;

    var h2 = document.getElementById('t2').clientHeight;

    var h3 = document.getElementById('t3').clientHeight;

    var hbody = document.body.clientHeight;

    document.write("<p>" + h1 + "</p>");

    document.write("<p>" + h2 + "</p>");

    document.write("<p>" + h3 + "</p>");

    document.write("<p>" + hbody + "</p>");

}

// --></script>

</head>

<body onload="onLoad()" id="t1">

<div id="t2"><p id="t3">test</p></div>

</body>

</html>

 通常、これを開くと、4つのゼロではない数字が表示されます。(Internet Explorer 6.0, Firefox 1.0.7, Opera 8.5, Netscape 8.0.4[Gecko/IE]で確認)

 しかし、Netscape 7.02で開くと、2番目と3番目の数字がゼロになります。

 どうも、body以外の要素について、clientWidth/clientHeightが機能していないような印象があります。

 ちなみに、この2つはマイクロソフトがInternet Explorerに実装した機能で、W3CのDOMにはないものです。

対策 §

 offsetWidth/offsetHeightに置き換えてみる……。しかし、これを行うと要素の縁の部分のサイズも含めたサイズが取得されてしまうので、完全互換ではありません。

 何か良い方法はないものかな?

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2005年
11月
02日
ブラウザ間非互換性: Safari2はlocation.hashの書き換えでリロードを発生させる
3days 0 count
total 2733 count
【技術雑記】の前のコンテンツ
2005年
10月
28日
これは凶悪だっっっ! JavaScriptの"for~in"構文の罠
3days 0 count
total 18134 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20051101171756
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.