パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

IE6にIFRAMEタグ関連の脆弱性が見つかる」記事へのコメント

  • Netscapeか?
    Microsoftか?
    W3Cか?

    表現なんだからCSSでどうにかしろよ。
    • MSNにアクセスするとIEをダウンロードしろってのを覚えてますか?
      MSのページの広告がIFRAMEをふんだんに使ったページなの
      IEを使わないと不味いわけです。

      思うのですがFirefoxが普及するとIFRAMEが消えると思いますね。
      画像のブロック機能があるんですが、広告のアドレスが外部に
      なっているものをブロックしてしまえば広告だけ消えます。
      広告を出したければ自前で出すようにしないと出ませんから
      おのずとIFRAME自身減少傾向になると思います。

      <Firefoxが有効な所>
      毎日
      • 参考: みんな、Firefoxを褒め過ぎだ [itmedia.co.jp]

        IEがいいとか悪いとかFireFoxがいいとか悪いとか以前に、
        この意見にあるようにおらが仕様にあわせろって言う意見は
        どうも身勝手な気がしてなりません。
        • 参考:みんな、Firefoxを褒め過ぎだ [itmedia.co.jp]

          itmedia の記事の中で、

          テーブルのcontent 領域内にはdivタグを入れて幅と高さを100%に設定し、CSSのoverflowの値をautoにすることで自動スクロールバーを付けた。

          :(中略)

          IEではちゃんとページを表示できた。だがFirefoxでは、divタグが親テーブルに合わせてリサイズしてくれない(スクロールバーも表示しない)。だから、下のツールバーは画面の外に消えてしまう。

          と書かれている。

          そこで示されてる先のページが今なぜか見られないのでソースが確認できないんだが、もじら組 [mozilla.gr.jp]の Web 標準化 Tips [mozilla.gr.jp] - height [mozilla.gr.jp]

          • どうも firefox ってheight を100% にすると
            overflow: scroll が効かなくなって、
            親要素の overflow: hidden がなぜか有効に
            なってしまうようです。
            下を IE で表示させると最初の div 要素の
            内容だけスクロールで見えます。
            でも firefox だと scroll が無効になって、
            最初の 20pt 文の内容だけしか
            見ることができません。

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
            <html lang="ja">
            <head>
            <title></title>
            <body>
            <div style="height:20pt; overflow: hidden">
            <div style="height:100%; overflow
            --
            -- 哀れな日本人専用(sorry Japanese only) --
            • 続報ですが、ここでさらに height の指定を消したり、 auto に設定したりすると IE と firefox の立場は 逆転して、スクロールバーがでるのは firefox だけ になりますね。 いずれにしろ、物理的な表示領域を越える内容が存在する場合、 overflow: scroll は有効にならない
              --
              -- 哀れな日本人専用(sorry Japanese only) --
              • ちょっと仰ることが良く判らないのですが。

                下を IE で表示させると最初の div 要素の 内容だけスクロールで見えます。 でも firefox だと scroll が無効になって、 最初の 20pt 文の内容だけしか 見ることができません。

                ということは、overflowプロパティが兄弟要素にも継承しないといけない、ということでしょうか。

                いずれにしろ、物理的な表示領域を越える内容が存在する場合、 overflow: scroll は有効にならないとおかしいですね。

                手許では有効になっていて、内側の前のdiv要素はスクロール表示されます。後ろのがoverflow: hiddenの影響で表示されないのは正しいのではないのですか。外側のoverflowプロパティを外すとこんな感じになります [ttcn.ne.jp]。 それを高さ20ptのボックスで切り取ると

              • リンクしていただいたページにあるように overflow は継承しない属性です。
                で、親div で hidden を指定し、子の最初の div で親の height を
                越えてしまえば、二番目の div は表示されないで正しいです。

                さて、スクロールバーがでないと騒いでしまいましたが、
                親のdiv で height を 40 pt にしたら出てしまいました。
                これは firefox が悪いのか、Windows98SE が悪いのかよく
                分からなくなりました。:-)

                で、もって、なんとなく分かってきたのですが、以下でやっぱり
                firefox でスクロールバーが出ず、 IE で出ます

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
                --
                -- 哀れな日本人専用(sorry Japanese only) --
              • で、もって、なんとなく分かってきたのですが、以下でやっぱり firefox でスクロールバーが出ず、 IE で出ます

                はい。再現しました。

                で、何が問題なのですか。overflow: auto;でスクロールバーが表示されるのは必須ではないそうです。原文では "should" ですが。Mozillaではスクロールバーが表示されない挙動をするのは仕様です。

                Bug 68390 [mozilla.org] - "overflow: auto" should always display a vertical scrollbar

                もう一度書きますが、どのように描画されるべきで、Firefox (Gecko/1.7) が間違っているのかをお教え願いたいです。WinIEが、を抜きにして。

                少しくどく。 heightプロパティ [y-adagio.com]は継承せず、デフォルト値はautoです。id="3"div要素 (以下要素名省略) にはheight: 100%が指定されていますが、包含ブロック (id="2") はデフォルトのheight: autoなので明示的に指定されていない、つまり (id="3"の) 内容の高さに依存します。というわけでid="3"は内容すべてを含む大きさになります。すべてが含まれる大きさのブロックになったので、overflow: autoであってもスクロールバーが表示されなくても間違いは無いと思います。id="2"autoなので3と4の両方を含める高さになり、id="1"については高さが明示的に指定されているのでその大きさでクリッピングされます。

                手元のWinIE6は、id="1"の高さが (2を経由して) id="3"に継承されているように見えます。外側のブロックから順に計算していけばWinIE6のようになりますが、これじゃ継承しないという定義に反するように見えます…。順序ってどこに書いてあるのかな。

                私のような素人が書く文章より、heightプロパティの注意点~内容が大きい場合 [mozilla.gr.jp] / height: n%;の正しい仕様 - Web標準普及プロジェクト [mozilla.gr.jp]あたりも参考になるかと思います。

                親コメント
              • W3C のCSS2 の仕様書を読んだところ次のことがわかりました。
                1. 137 ページから height の仕様により パーセンテージの計算法は ブロックを含んでいる生成されているボックス の高さに対する割合から計算するようです。
                2. height が auto の計算法は 138 ページの10.6 章に ありますが、今注目しているのは 10.6.3 に該当します。 この場合、子要素の高さから算出するようです。
                3. 1. の計算と 2. の計算で相互に参照しあって決まらない場合は auto にする(height の percentage の定義より)
                ということなので、 id=2 のブロックの高さは id=3 とid=4 の 高さの合計になるようです。 で、id=3 の高さが決められないので、結局 100% は auto と 読み替えということですね。 ということで、firefox の方が正しいってことですかね。 id=2 の大きなブロックを id=1 の小さな窓から覗く時、 はみ出た部分を隠すようにしているってことですね。 id=3 でのパーセント指定は無効だということですね。 IE でも height:auto とすると同じになりました。 id=2 で height: inherit とすると双方同じスクロールバーが出ますね。

                結局あの「firefoxを褒めすぎだ」で使われているスタイルシート では、はみ出た部分は隠しなさいと主張しているってことですね。 で、著者がやりたい内容のスタイルはどう書けばよいやら……

                ただ、overflow 属性の hidden を読むと、firefox で ドラッグすると 隠れた部分が見えてしまうのは仕様に反するようです。 (まあ should ですが……) IE では height:auto とすれば隠れた部分を見ることができず、 仕様通りです。

                --
                -- 哀れな日本人専用(sorry Japanese only) --
                親コメント

日本発のオープンソースソフトウェアは42件 -- ある官僚

処理中...