すぎたです。

In message news:20040317003513.9051508.1245854872@uranus.interq.or.jp
"笠原 励(氷炎 雷光風)" <cuncuku@uranus.interq.or.jp> wrote ...

> 例えば、文字型の変数を使って何かするような場合に、
> 見られるような文でしょうか?

そうですね。
引数が省略されたときに、undefined じゃなくて
オブジェクトにしたい場合とかです。
デフォルト値だと、きちんと undefined で判定した方が
良いと思います。


> > documentElement の方は時間があったら調べてみます…が、
> > いつになるか…(^^;;
> この辺の話については、
> Message-ID: <c34gcf$23tk@utogw.gssm.otsuka.tsukuba.ac.jp>
> で久野さんが書かれていることを参照していただくのが良いかと。

IE5.5sp2 だと、標準モードというのは無くて、IE6 の互換モード
に相当します。
その際、先の評価だと document.documentElement になってしまって、
正しく動作しないので、どうするのがスマートだろうか?
という話です。


> <meta>タグはヘッダ部分に書くもののはずですし、

いえ、http ヘッダの話なので、ヘッダ部分に書くのが正しいのかが
判断がつかなかったのです。


> 「ウィンドウサイズが変化した場合」「表示に関する応答速度」

以下、久野さんのを IE5.5sp2 用に加工したサンプルです。
# 非標準モードで書いてます。

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <title>???</title>
  <style type="text/css">
  BODY, DIV, P {
    margin : 0px;
    padding: 0px;
    font-family: monospace;
  }
  #left  {
    position: absolute; border: blue double 2px;
    left  :   0px;
    top   :   0px;
    width : 100px;
    height: 200px;
  }
  #left2 {
    position: absolute; border: blue double 2px;
    left  :   0px;
    top   : 200px;
    width : 100px;
    height: 200px;
  }
  #right { margin-left: 100px; border: green double 2px }
  </style>
  <script type="text/javascript">
  var scrflag = false;
  var tid = null;
  var l, l2;
  function refresh() {
    l .style.top = document.body.scrollTop   +  0+'px';
    l2.style.top = document.body.scrollTop   +200+'px';
    if(document.all) { // IE
      l2.style.height = document.body.clientHeight-200+'px';
    } else { // 非標準モード
      l2.style.height = window.innerHeight-204+'px';
    }
  }
  function setpos() {
    refresh();
    l .style.visibility = "visible";
    l2.style.visibility = "visible";
    scrflag = false;
  }
  function check() {
    if (!scrflag) {
      l .style.visibility = "hidden";
      l2.style.visibility = "hidden";
      scrflag = true;
    } else {
      clearTimeout(tid);
    }
    tid = setTimeout(setpos, 500);
  }
  function init() {
    l  = document.getElementById("left" );
    l2 = document.getElementById("left2");
    if(document.all) { // IE
      window.onscroll = check;
      window.onresize = refresh;
    } else {
      l .style.position = "fixed";
      l2.style.position = "fixed";
    }
    refresh();
  }
  </script>
  </head>
  <body onload="init()">
  <div id="left">
  <p>a</p><p>b</p><p>c</p><p>d</p><p>e</p><p>f</p><p>g</p>
  </div>
  <div id="left2">
  <p>a</p><p>b</p><p>c</p><p>d</p><p>e</p><p>f</p><p>g</p>
  </div>
  <div id="right">
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  <p>あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお</p>
  </div>
  </body>
  </html>


> > CSS のみだと expression 使えば良いのかもですが、
> > 試してないもので…(^^;
> expressionって何でしょうか?拡張?

すみません。expression 使っても、更新にスクリプトが必要
でした。また、IE 以外でサポートしていないかもしれません。

使い方としては、以下のような感じです。

  <style>
  #left  {
    position: absolute; border: blue double 2px;
    left  : 0px;
    top   : expression(document.body.scrollTop   +  0+'px');
    width : 100px;
    height: 200px;
  }
  #left2 {
    position: absolute; border: blue double 2px;
    left  : 0px;
    top   : expression(document.body.scrollTop   +200+'px');
    width : 100px;
    height: expression(document.body.clientHeight-200+'px');
  }
  </style>
  <script>
  function refresh() {
    document.recalc(true);
  }
  </script>

-- 
杉田
sugi-nws@bk.iij4u.or.jp