どうも。氷炎 雷光風(ひえん らいこふ)こと笠原です。

fj.comp.lang.javascriptにクロスして、
Followup-To:fj.comp.lang.javascriptとなってます。

Message-ID: <c3s11d$ouv$1@news00.iij4u.or.jp>
において、すぎたさんは書きました。

> 今回の件は(今日compatModeを見つけたので(^^;;)
> 
>   var b = (document.all && (document.compatMode == undefined || document.compatMode == "BackCompat"))
>             ? document.body : document.documentElement;
> 
> の方が良いかもしれません。(IEなら、document.body.scrollTop でも十分かも)
こちらについて質問させてください。
互換モードを条件に入れての判定のように思うのですが、
いったいどういうことなのかサッパリです。

&&と||を使っての2重入れ子の条件判定(これをAとする)。
Aと?以後の文の、比較or条件判定を取って、bの値に設定している

ということでしょうか?

で、こうすることによるメリットというのは、どういうことでしょうか?

> また、lb が設定されていないため、こちらも設定した方が良いかと。
> 
>   var movepos = function () {
>     lt.style.top = b.scrollTop + 'px';
>     lb.style.top = b.scrollTop + 160 + 'px';
>     r .style.top = b.scrollTop + 'px';
>   }
>   setInterval(movepos, 200);
久野さんのサンプルを自分でいじった時、lbの設定文を入れていたのですが、
動作がうまくいかなかったのと、ltとrだけの設定で問題なさそうというのが
あって、あえて削っていましたが、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
を書き間違えるというのが原因だったみたいです。

そして、すぎたさんの意見を元に、下記のようにしてみました。
script本体部分だけ書きます。


                        function init() {
                                if(document.all) { // IE
                                var lt = document.getElementById('left-top'); lt.style.position = 'absolute';
                                var lb = document.getElementById('left-bottom'); lb.style.position = 'absolute';
                                var r = document.getElementById('right'); r.style.position = 'absolute';
                                var b = document.documentElement || document.body; 
                                var movepos = function () {
                                                                        lt.style.top = b.scrollTop + 'px';
                                                                        lb.style.top = b.scrollTop + 160 + 'px';
                                                                        r .style.top = b.scrollTop + 'px';
                                        }
                                setInterval(movepos, 200);
                        }
                        }

> 今回のケースではあまり意味を持ちませんが、テストとしては、
> </body> の直前に大量の行を挿入して、div の height:100%
> を超えるようにしてテストすると、JavaScript が動作しているか
> 確認できます。
なるほど、そんな確認方法があったのですね。
「今回のケースではあまり意味を持ちません」というのは、
どういう意味でしょう?今1つピンと来ません。

> > 修正後、コメントアウトしても正しく動作することを確認しました。
> 
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
> だと、非標準モード(互換モード)で動作している点については、
> 認識しておいた方が良いと思います。
はい。それは認識しています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
を書き間違えるというのは、ちょっと情けなかったかも・・・

ではでは。
--
笠原 励(氷炎 雷光風/ひえん らいこふ)
cuncuku@uranus.interq.or.jp −受信専用−cuncuku@yahoo.co.jp
オリジナルストーリーの感想は、if_tlw-lj@infoseek.jpまで。
Subjectに「番外編」とあれば、ほぼオリジナルストーリーです。