none
IE8でFramesetを入れ子にしたページを表示した場合、一部のFrameのサイズが変更できない RRS feed

  • 質問

  • IE8でFramesetを入れ子にしたページを表示した場合、
    一部のFrameのサイズが変更できないです。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
    <html>
    <head>
      <title>フレーム使用例</title>
    </head>
    <frameset rows="*,*" name="frameset1">
      <frame src="frame1a.html" name="frame1a">
      <frameset rows="*,*" name="frame2">
        <frame src="frame2a.html" name="frame2a">
        <frameset cols="*,*" name="frame3">
          <frame src="frame3a.html" name="frame3a">
          <frame src="frame3b.html" name="frame3b">
        </frameset>
      </frameset>
    </frameset>
    </html>
    上記HTMLをIE8にて実行すると
    [ frame1a ]と[ frame2 ]の区切り、[ frame3a ]と[ frame3b ]の区切りのサイズ変更は出来るのですが
    [ frame2a ]と[ frame3 ]の区切りのサイズが変更できません。
    ※ちなみにIE7、IE6で実行した場合は全ての区切りでサイズ変更が出来ます。

    使用した環境は以下です。
    OS: WindowsXP SP3
    ブラウザ:IE8

    また上記HTMLを以下に変更した場合はIE8においても全ての区切りのサイズ変更が出来ます
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
    <html>
    <head>
      <title>フレーム使用例2</title>
    </head>
    <frameset rows="*,*" name="frameset1">
      <frame src="frame1a.html" name="frame1a">
      <frameset cols="0,*" name="frameDMY">
        <frame src="frameDMY1a.html" name="frameDMY1a">
        <frameset rows="*,*" name="frame2">
          <frame src="frame2a.html" name="frame2a">
          <frameset cols="*,*" name="frame3">
            <frame src="frame3a.html" name="frame3a">
            <frame src="frame3b.html" name="frame3b">
          </frameset>
        </frameset>
      </frameset>
    </frameset>
    </html>
    上記から推察するに
    [ rows ]で区切ったframeset内に、さらに[ rows ]で区切った子のframesetを入れるとIE8ではサイズ変更が不可になる。
    と思われます。

    なるべくならFrameの構造を崩さずに対応したいのですが、何か方法はあるのでしょうか?
    2009年5月22日 6:42

回答

  • この問題について久しぶりに確かめてみたところ
    パッチを当てたせいか直っていました

    どのパッチで直ったのか、各パッチの説明を見ても分からなかったのですが
    一応解決とさせていただきます。

    できればどのパッチで直ったのか分かればいいのですが・・・

    • 回答としてマーク なるがみ 2009年11月27日 7:10
    2009年11月27日 7:10

すべての返信

  • こちらでもIE8で再現しました。

    >※ちなみにIE7、IE6で実行した場合は全ての区切りでサイズ変更が出来ます。
    これも同様です。

    対策案を模索しましたが、フレームの構造を変更しない方法は見つかりませんでした。

    模索した内容を書いておきます。すべて有効な対策ではありませんでした。()内は何の目的でその模索を行ったかです。
    ①JavaScriptでnoresizeプロパティを"false"に設定しなおす。
     (意図は、noresizeは縦横両方ともリサイズ不可にするプロパティなので、falseを設定することで縦のみリサイズ出来ない現象回避が出来るかも)
    ②動的にframeタグを生成する。
     (意図は、frameタグの生成方法が変われば、何かしらの初期値が変わるのではないか?)
    ③noresizeプロパティやscrollbarプロパティを動的に書き換えまくる。
     (IEをびっくりさせるため)
    ④DOCTYPEプロパティを色々変えてみる。
     (意図は、framesetの解釈方法が変わるかも)
    ⑤IE7モードで表示させてみる。metaタグやツールバーの設定にて。
     (意図は、IE7ならリサイズ出来たため、IE7モードにするとリサイズ出来るようになるのではないか?)

    色々書いていますが、全部ダメだったということです。

    2009年5月24日 15:27
  • >(´・ω・`)さん

    ご回答有り難うございます。
    やっぱりフレームの構造を変えないといけないですか・・・

    私でも追試をしていて少しおかしな挙動をし始めたので記載しておきます。
    試験したコードは以下の通りです
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
    <html>
    <head>
      <title>フレーム使用例3</title>
    </head>
    <frameset rows="250,*" name="frameset1">
      <frame src="frame1a.html" name="frame1a">
      <frameset rows="251,*" name="frameset2">
        <frame src="frame2a.html" name="frame2a">
        <frameset cols="*,*" name="frameset3">
          <frame src="frame3a.html" name="frame3a">
          <frame src="frame3b.html" name="frame3b">
        </frameset>
      </frameset>
    </frameset>
    </html>

    不具合が発生するのコードにフレームセットの高さを指定したものになります。
    この状態で[ frame1a ]と[ frame2 ]の区切りの影の1px下付近をドラッグすると
    なぜか[ frame2a ]と[ frame3 ]の区切りのサイズ変更ができてしまいました。

    このことからIE8の問題でrowsが続く入れ子のフレームセットの場合は
    上フレームセットからの位置ではなく、一番上(0px)からの位置にあると認識しているのでは?
    と思ってしまいます。
    2009年5月25日 3:00
  • さらに追試したところ現象がわかってきたので記載します
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
    <html>
    <head>
      <title>フレーム使用例4</title>
    </head>
    <frameset cols="50,*" name="frameset1">
      <frame src="frame1a.html" name="frame1a">
      <frameset cols="51,*" name="frameset2">
        <frame src="frame2a.html" name="frame2a">
        <frameset cols="52,*" name="frameset3">
          <frame src="frame3a.html" name="frame3a">
         <frameset cols="53,*" name="frameset4">
            <frame src="frame4a.html" name="frame4a">
            <frame src="frame4b.html" name="frame4b">
          </frameset>
        </frameset>
      </frameset>
    </frameset>
    </html>
    上記のコードですと
    ・「frame1a」と「frameset2」の区切りのサイズ変更は正常
    ・「frame2a」と「frameset3」の区切りのサイズ変更は[ 画面表示時点での「frame1a」と「frameset2」の区切りの陰 ]の1px右がわをドラッグすると可能
    ・「frame3a」と「frameset4」の区切りのサイズ変更は[ 画面表示時点での「frame2a」と「frameset3」の区切りの陰 ]の1px-2px右がわをドラッグすると可能
    ・「frame4a」と「frame4b」の区切りのサイズ変更は[ 画面表示時点での「frame3a」と「frameset4」の区切りの陰 ]の1px-3px右がわをドラッグすると可能
    でサイズ変更が可能になった

    同様なコードとして
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
    <html>
    <head>
      <title>フレーム使用例5</title>
    </head>
    <frameset rows="50,*" name="frameset1">
      <frame src="frame1a.html" name="frame1a">
      <frameset rows="51,*" name="frameset2">
        <frame src="frame2a.html" name="frame2a">
        <frameset rows="52,*" name="frameset3">
          <frame src="frame3a.html" name="frame3a">
          <frameset rows="53,*" name="frameset4">
            <frame src="frame4a.html" name="frame4a">
            <frame src="frame4b.html" name="frame4b">
          </frameset>
        </frameset>
      </frameset>
    </frameset>
    </html>
    上記のコードですと
    ・「frame1a」と「frameset2」の区切りのサイズ変更は正常
    ・「frame2a」と「frameset3」の区切りのサイズ変更は[ 画面表示時点での「frame1a」と「frameset2」の区切りの陰 ]の1px下がわをドラッグすると可能
    ・「frame3a」と「frameset4」の区切りのサイズ変更は[ 画面表示時点での「frame2a」と「frameset3」の区切りの陰 ]の1px-2px下がわをドラッグすると可能
    ・「frame4a」と「frame4b」の区切りのサイズ変更は[ 画面表示時点での「frame3a」と「frameset4」の区切りの陰 ]の1px-3px下がわをドラッグすると可能
    でサイズ変更が可能になった

    上記からIE8の問題でrowsまたはcolsが続く入れ子のフレームセットの場合は
    親フレームセットからの位置ではなくさらに上のフレームセットからの位置に区切りあると認識している
    のではないかと思います。

    これって明らかにIE8のバグのような気がしますが・・・どうなんでしょうか?
    2009年6月1日 6:50
  • この問題について久しぶりに確かめてみたところ
    パッチを当てたせいか直っていました

    どのパッチで直ったのか、各パッチの説明を見ても分からなかったのですが
    一応解決とさせていただきます。

    できればどのパッチで直ったのか分かればいいのですが・・・

    • 回答としてマーク なるがみ 2009年11月27日 7:10
    2009年11月27日 7:10
  • >できればどのパッチで直ったのか分かればいいのですが・・・
    ・・・なんという釣r(略)

    2009/10/12公開のKB974455のようです。(・・・パッチを一つ一つ消して確認しました。)
    http://support.microsoft.com/Default.aspx?kbid=974455
    上記に
    971448  (http://support.microsoft.com/kb/971448/ )  Internet Explorer 8 で Web ページを開くと、入れ子のフレームセットでフレームのサイズ変更ができない
    として載っていますね。Congratulations!
    2009年12月7日 15:26
  • >(´・ω・`)さん

    修正されたパッチを見つけていただき&パッチの動作確認もしていただき有り難うございます。
    また何度もお助けいただき本当に感謝しております。

    では
    2009年12月8日 0:30
  • >(´・ω・`)さん

    パッチを見つけていただき&追試もしていただき有り難うございます。
    また何度もお助けいただき本当に感謝しております。

    ではありがとうございました。
    2009年12月8日 0:33