2 Stimmen

Warum DIV verschiebt sich, wenn focus() in onBeforeDeactivate Event-Handler aufgerufen wird?

Ich habe ein Problem mit der Verkabelung einer Webseite im IE7/8. Die Seite ist so konfiguriert, dass sie dir="rtl" . Und divRow sehr groß gemacht wird Breite damit das darin enthaltene div nicht umbrochen wird.

Klicken Sie auf den Editorbereich, geben Sie einige Wörter ein und klicken Sie dann auf den Text "Hallo Welt". Das Layout wird unübersichtlich, weil der Versatz und die Breite des div mit divRow Klasse geändert.

Ich vermute, dass dies ein Fehler des IE7/8 ist. Gibt es eine Möglichkeit, dieses Problem zu umgehen?

Im Grunde genommen, divRow muss sein enthaltenes div nicht umbrechen.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
  "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
  <style>
    div 
    {
      border: 1px;
      border-color: black;
    }

    .divRow
    {
      /* this is to make its containing div not to wrap */
      min-width: 2000px; 
    }

    div.divEditor
    {
      width: 100%;
    }

    iframe
    {
      height: 100%;
      width: 100%;
    }
  </style>
  <script>
    function $(id)
    {
      return document.getElementById(id);
    }

    function focusToRight()
    {
      var elem = $("innerDiv1");

      function fcs()
      {
        elem.focus();
      }
      setTimeout(fcs, 1);

    }
  </script>
  </head>
  <body dir="rtl">
    <div>
    <div id='main' 
      style="overflow: hidden; position: relative; width=100%">
      <div class="divRow" id="firstRow">
        <div style='float:right' id='innerDiv1'>
          Hello world.
        </div>
        <div style='float:right' id='innerDiv2'>
          This is to make it is very very very very very very very very  
          very very very very very very very very long
        </div>
      </div>
      <div class="divEditor">
        <iframe id="editorIFrame" onbeforedeactivate="focusToRight();" 
          src="about:blank"></iframe>
      </div>
    </div>

    </div>
    <script>
      //document.getElementById('main').style.width='40px';
      //$("editorIFrame").document.designMode = "on";
      document.frames["editorIFrame"].document.designMode = "On";
    </script>
  </body>
</html>

2voto

wheresrhys Punkte 21136

Beseitigen Sie die Bedingung min-width:2000px vollständig.

Um zu verhindern, dass ein Containing-Div umbricht oder kollabiert, fügen Sie ein leeres Div mit style="clear:right" direkt vor dem Ende des Divs ein. Dieses neue Div befindet sich immer noch innerhalb des enthaltenden Divs, aber es muss die Floats ausblenden, d. h. unter ihnen liegen, so dass es die vertikale Höhe des Divs streckt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X