Madoc: Tabelle in Pop-Up Fenster nicht zentriert!

Hallo Ihr,

ich habe folgendes Problem und weiß momentan nicht an was es liegen könnte. Auf meiner Vereinsweb-Site, die mit einem Tabellenlayout aufgebaut ist, will ich über eine Schaltfläche ein kleines Fenster aufmachen, daß mir eine Anfahrtsskizze zeigt.
Geht auch alles soweit, nur daß die Tabelle, die sich in diesem Fenster befindet, nicht in der mitte des Fensters steht, abwohl ich zentrisch positionier. Ich habe mit IE 6.0 immer oben und links einen Rand von ca. 10-15px. Vielleicht kann mir jemand helfen, da ich auch noch in der Lernphase bin.

Hier der Quelltext für das Öffnen des Fensters:

<script language="JavaScript">
<!--
  function oeffnefenster (url) {
 var fenster=window.open(url, "fenster1", "width=407,height=430,status=no,scrollbars=auto,resizable=no");
}
}

// -->

<td width=104 height="14"><a href="javascript:oeffnefenster('anfahrt_11.htm')" onMouseOver="changeImages('image1', 'image1on')" onMouseOut="changeImages('image1', 'image1off')"><img name="image1" src="pics/fliegergruppe.gif" alt="Fliegergruppe" width=104 height=14 border=0></a></td>

Und hier das Fenster selber:

<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--

if (document.images) {
  image1on = new Image();
  image1on.src = "pics/zoom-_over.gif";

image2on = new Image();
  image2on.src = "pics/drucken_over.gif";

image3on = new Image();
  image3on.src = "pics/zoom+_over.gif";

image1off = new Image();
  image1off.src = "pics/zoom-.gif";

image2off = new Image();
  image2off.src = "pics/drucken.gif";

image3off = new Image();
  image3off.src = "pics/zoom+.gif";

}

function changeImages() {
  if (document.images) {
    for (var i=0; i<changeImages.arguments.length; i+=2) {
      document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
    }
  }
}

// -->
</script>
</head>

<body>
<div align="center">
  <table width="400" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td width="400" height="400" align="center" valign="top"><img src="pics/anfahrt_1.gif" width="400" height="400"></td>
    </tr>
    <tr>
      <td height="5"></td>
    </tr>
    <tr>
      <td height="14" align="center" valign="top"><a href="anfahrt_1.htm" target="_self" onMouseOver="changeImages('image1', 'image1on')" onMouseOut="changeImages('image1', 'image1off')"><img name="image1" src="pics/zoom-.gif" alt="zoom-" width=52 height=14 border=0></a><a href="javascript:print()" target="_self" onMouseOver="changeImages('image2', 'image2on')" onMouseOut="changeImages('image2', 'image2off')"><img name="image2" src="pics/drucken.gif" alt="drucken" width=53 height=14 border=0></a><a href="anfahrt_2.htm" target="_self" onMouseOver="changeImages('image3', 'image3on')" onMouseOut="changeImages('image3', 'image3off')"><img name="image3" src="pics/zoom+.gif" alt="zoom+" width=52 height=14 border=0></a>
      </td>
    </tr>
  </table>
</div>
</body>
</html>

Wäre nett, wenn mir jemand sagen könnte an was es liegt!

Viele Grüße von der Schwäbischen Alb

Madoc

  1. Hallo Madoc,

    Ich habe mit IE 6.0 immer oben und links einen Rand von ca. 10-15px. Vielleicht kann mir jemand helfen, da ich auch noch in der Lernphase bin.

    Und hier das Fenster selber:

    <body style="margin:0px">

    Gruß Gunther

    1. Hallo Gunther,

      vielen Dank für Deine schnelle Hilfe!!!! :o)

      Gruß Madoc

  2. Geht auch alles soweit, nur daß die Tabelle, die sich in diesem Fenster befindet, nicht in der mitte des Fensters steht, abwohl ich zentrisch positionier. Ich habe mit IE 6.0 immer oben und links einen Rand von ca. 10-15px.

    <td width=104 height="14"><a href="javascript:oeffnefenster('anfahrt_11.htm')"

    Nur nebenbei: Was machen Leute, die kein Javascript eingeschaltet haben?

    <title>Unbenanntes Dokument</title>

    So ein Titel ist eigentlich noch schlimmer als gar kein Titel :)

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Du bist Dir sicher, daß Du als Zeichensatz iso-8859-1 benutzt? Falls Du mit Windows arbeitest, stimmt diese Angabe mit ziemlicher Sicherheit nicht, denn Windows hat windows-1252 (sieht ähnlich aus, ist es aber nicht).

    <div align="center">
      <table width="400" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="400" height="400" align="center" valign="top"><img src="pics/anfahrt_1.gif" width="400" height="400"></td>
        </tr>
        <tr>
          <td height="5"></td>
        </tr>

    Den eigentlichen Fehler kann ich Dir nicht sagen (obwohl mir Deine Höhen- und insbesondere Breitenangaben etwas verdächtig vorkommen), aber wie wär's damit: Die Tabelle ist in dieser Seite vollkommen nutzlos, denn einzelne Zeilen kann der Browser auch ohne Tabelle anlegen. Es dürfte also folgender Code reichen:

    <body style="text-align:center">
      <img src="pics/anfahrt_1.gif" width="400" height="400" />
      <p />
      <a href="anfahrt_1.htm" ...
      </body>

    Wenn Dir der von <p> erzeugte Abstand nicht gefällt, ersetze <p> durch <br> und verpasse dem Bild unten einen Abstand mittels CSS und margin-bottom (siehe SelfHTML).

    Und das Schöne an der Sache: Diese Konstruktion ist nicht nur deutlichst einfacher und kürzer, ich könnte mir sehr gut vorstellen, daß Du wegen der Simplizität auch Dein Zentrierproblem los bist.

    Gruß,
      soenk.e

    1. Nur nebenbei: Was machen Leute, die kein Javascript eingeschaltet haben?

      gibt es solche Leute???

      <title>Unbenanntes Dokument</title>

      So ein Titel ist eigentlich noch schlimmer als gar kein Titel :)

      Ich weiß, habe aber auch erst begonnen mit deiser Web-Site.

      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

      Muß ich nachschauen, wurde vom Editor so generiert.

      Du bist Dir sicher, daß Du als Zeichensatz iso-8859-1 benutzt? Falls Du mit Windows arbeitest, stimmt diese Angabe mit ziemlicher Sicherheit nicht, denn Windows hat windows-1252 (sieht ähnlich aus, ist es aber nicht).

      Ich werde alles nochmal prüfen und Deine Idee mal einfliessen lassen.

      Vielen Dank für Deine ausführliche Hilfe!!!
      Sehr nett...

      Viele Grüße  Madoc

      1. Nur nebenbei: Was machen Leute, die kein Javascript eingeschaltet haben?

        gibt es solche Leute???

        Eine ganze Menge. Schon alleine, weil es mancherorts die einzige Möglichkeit ist, Werbefenster zu unterdrücken. Von der Virenanfälligkeit des IE bei eingeschaltetem "ActiveScripting" mal ganz zu schweigen..

        Gruß,
          soenk.e

    2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

      Du bist Dir sicher, daß Du als Zeichensatz iso-8859-1 benutzt? Falls Du mit Windows arbeitest, stimmt diese Angabe mit ziemlicher Sicherheit nicht, denn Windows hat windows-1252 (sieht ähnlich aus, ist es aber nicht).

      Nein!

      Es ist genau umgekehrt. window-1252 ist ein propitärer Zeichnesatz und sollte nicht im Internet zum Eisatz kommen. iso-8859_1 ist schon richtig auch für Windows

      Struppi.

      1. Es ist genau umgekehrt. window-1252 ist ein propitärer Zeichnesatz und sollte nicht im Internet zum Eisatz kommen. iso-8859_1 ist schon richtig auch für Windows

        Die Zeichensatzangabe unter Content-Type bestimmt den Zeichensatz, den die Datei benutzt. Dieser Zeichensatz wird bestimmt durch das Betriebssystem (oder -seltener- den Editor), mit dem die Datei erzeugt wurde. Dementsprechend kannst Du dort nicht einfach irgendwas reinschreiben, nur weil's Dir gerade gefällt.
        Windows benutzt normalerweise _nicht_ die ISO-8859-Zeichensätze, somit muß dort zwangsläufig windows-xxxx stehen, alles andere ist verkehrt.

        Ob sich das in der Praxis auswirkt oder nicht, hängt davon ab, ob man es schafft, nur 7-Bit-Zeichen zu benutzen oder nicht - ändert aber nichts daran, daß die Zeichensatzangabe dem Erstellungssystem entsprechen sollte.

        Gruß,
          soenk.e

        1. Hallo,

          Windows benutzt normalerweise _nicht_ die ISO-8859-Zeichensätze, somit muß dort zwangsläufig windows-xxxx stehen, alles andere ist verkehrt.

          Ich dachte, ISO-8859-1 und Windows 1252 decken sich bis auf die Zeichen 128-159, sodass eine in Windows 1252 kodierte Datei problemlos als ISO-8859-1 ausgezeichnet werden kann, sofern keine dieser Zeichen verwendet werden?

          Ob sich das in der Praxis auswirkt oder nicht, hängt davon ab, ob man es schafft, nur 7-Bit-Zeichen zu benutzen oder nicht -

          Wieso sollte man in unter oben beschriebenen Bedingungen als ISO-8859-1 ausgezeichnete Windows 1252-Dokumenten keine 8-Bit-Zeichen verwenden dürfen, welche in beiden Codetabellen an selber Stelle stehen (beispielsweise die im Deutschen Verwendung findenden Umlaute)? Für die genannten Zeichen wie typographische Anführungszeichen können ja in der Regel Entities verwendet werden.

          ändert aber nichts daran, daß die Zeichensatzangabe dem Erstellungssystem entsprechen sollte.

          Siehe oben, das kann ich in dem Fall nicht nachvollziehen.

          Grüße,
          Mathias

          1. Windows benutzt normalerweise _nicht_ die ISO-8859-Zeichensätze, somit muß dort zwangsläufig windows-xxxx stehen, alles andere ist verkehrt.

            Ich dachte, ISO-8859-1 und Windows 1252 decken sich bis auf die Zeichen 128-159, sodass eine in Windows 1252 kodierte Datei problemlos als ISO-8859-1 ausgezeichnet werden kann, sofern keine dieser Zeichen verwendet werden?

            Ja, "sofern keine dieser Zeichen verwendet werden". Aber Otto Normaluser drückt auf seiner Microsoft-Tastatur das Eurozeichen und schon ist es passiert.

            ändert aber nichts daran, daß die Zeichensatzangabe dem Erstellungssystem entsprechen sollte.

            Siehe oben, das kann ich in dem Fall nicht nachvollziehen.

            Es ist kein Aufwand, es richtig zu machen, also warum falsch machen? Davon mal abgesehen gibt es für alles außerhalb des ASCII-Raums Umschreibungen, von daher erübrigt sich die Frage ob iso-8859-1, -15 oder windows-1252 eigentlich von selbst, so daß wirklich niemand gezwungen ist, einen falschen Zeichensatz anzugeben.

            Struppi meinte "iso-8859-1 ist schon richtig auch für Windows" im Internet, da windows-1252 ein systemspezifischer Zeichensatz sei. Diese Aussage ist so definitiv falsch, denn nur mit der Änderung der Zeichensatzangabe ist es nicht getan - man muß schon darauf achten, auch diesen Zeichensatz zu benutzen. Und wenn man sich mal anschaut, wieviele Eurozeichen im Netz mit der Hausnummer 128 herumschwirren, haben offensichtlich einige Leute ein Problem damit.

            Gruß,
              soenk.e

            1. Hallo,

              Ich dachte, ISO-8859-1 und Windows 1252 decken sich bis auf die Zeichen 128-159, sodass eine in Windows 1252 kodierte Datei problemlos als ISO-8859-1 ausgezeichnet werden kann, sofern keine dieser Zeichen verwendet werden?

              Ja, "sofern keine dieser Zeichen verwendet werden". Aber Otto Normaluser drückt auf seiner Microsoft-Tastatur das Eurozeichen und schon ist es passiert.

              Otto Normaluser sollte auch ohne minimale Kenntnisse keine Webseiten schreiben.

              ändert aber nichts daran, daß die Zeichensatzangabe dem Erstellungssystem entsprechen sollte.

              Siehe oben, das kann ich in dem Fall nicht nachvollziehen.

              Es ist kein Aufwand, es richtig zu machen, also warum falsch machen?

              Was verstehst du als »richtig« und »falsch«? Ich finde auch, dass es kein Aufwand ist, darauf zu achten, bspw. in Windows 1252-Dokumenten nur Zeichen aus ISO-8859-1 zu verwenden, falls du das meintest.
              Ich habe deine Aussage so verstanden, dass du dich dafür aussprichst, auf Windows-Systemen erstellte Dokumente auch mit Windows-Zeichenkodierungen auszuzeichnen/auszuliefern. Ich wollte hingegen vorschlagen, lieber die verwendeten Zeichen einzuschränken und sie bspw. als ISO-8859-1 auszuliefern. Umlaute können dadurch direkt benutzt werden, ohne »Umschreibungen« wie bspw. Entities.

              Davon mal abgesehen gibt es für alles außerhalb des ASCII-Raums Umschreibungen, von daher erübrigt sich die Frage ob iso-8859-1, -15 oder windows-1252 eigentlich von selbst, so daß wirklich niemand gezwungen ist, einen falschen Zeichensatz anzugeben.

              Ich verstehe den Zusammenhang nicht, ich wollte dir nicht darin widersprechen, dass die verwendete Zeichenkodierung auch exakt angegeben werden sollte.
              Ich habe aber immer noch nicht verstanden, wieso man deiner Meinung nach nicht die angesprochenen in Windows und ISO deckungsgleichen 8-Bit-Zeichen verwenden soll und warum außerhalb von ASCII Umschreibungen verwendet werden sollen. Wenn eine passende Zeichenkodierung existiert und benutzt werden kann, wieso soll diese nicht verwendet und ausgeschöpft werden?

              Struppi meinte "iso-8859-1 ist schon richtig auch für Windows" im Internet, da windows-1252 ein systemspezifischer Zeichensatz sei. Diese Aussage ist so definitiv falsch, denn nur mit der Änderung der Zeichensatzangabe ist es nicht getan - man muß schon darauf achten, auch diesen Zeichensatz zu benutzen.

              Ja, das wollte ich auch nicht bestreiten, ich gehe nur mit deiner Empfehlung nicht konform, Windows-Zeichenkodierungen zu verwenden, wenn man ohne große Änderungen die kompatiblere ISO-Variante verwenden kann bzw. die entstehenden Dokumente quasi ISO nutzen.

              Grüße,
              Mathias

              1. Ich habe aber immer noch nicht verstanden, wieso man deiner Meinung nach nicht die angesprochenen in Windows und ISO deckungsgleichen 8-Bit-Zeichen verwenden soll und warum außerhalb von ASCII Umschreibungen verwendet werden sollen. Wenn eine passende Zeichenkodierung existiert und benutzt werden kann, wieso soll diese nicht verwendet und ausgeschöpft werden?

                Stelle mal Deinen Browser auf iso-8859-15. Mindestens ein Drittel (rein subjektiv natürlich:) aller auf Webseiten verwendeten Eurozeichen wird sich darauf hin hinter einem hilflosen Kästchen oder Fragezeichen verstecken. Und dieses Phänomen gilt wohlgemerkt nur für die Seiten, die gänzlich ohne Zeichensatzangabe ausgeliefert werden; Mozilla (zumindest unter Windows) zeigt beispielsweise unter iso-8859-1 das Eurozeichen ebenfalls auf der Windows-Position 128 an - es könnten sich also noch eine ganze Menge weiterer falscher Euros herumtreiben.

                Nun ist das natürlich alles kein Weltuntergang und ich will hier auch nicht den Erbsenzähler raushängen lassen. Auf die strikte Einhaltung von iso-8859-1 (kein Euro) kann man letztenendes genauso gut verzichten wie man über die besagten Fragezeichen hinweg sehen kann.

                Es ist aber angesichts obiger Beobachtung offensichtlich so, daß sehr viele Leute mit dem Zeichensalat nicht zurecht kommen. Und meiner Meinung nach ist es wesentlich sicherer, jemandem einfach zu empfehlen, entweder für alles außerhalb des ASCII-Raums (etwa: "A bis Z und Zahlen") grundsätzlch Umschreibungen zu nutzen oder (exklusives oder) windows-1252 als Zeichensatz anzugeben (sprich: den tatsächlich verwendeten).

                Die Vorgabe "Setze 'iso-8859-1' und achte dann beim Tippen darauf, diese Zeichen nicht direkt einzutippen, so wie Du es mit jenen machst, sondern die Umschreibung zu nutzen." ist mir erfahrungsgemäß zu kompliziert. Nicht lachen, es ist wirklich so: Die eine Hälfte wird sich nach drei Wochen nicht mehr an die Regelung zur Ausnahme von der Ausnahme erinnern, der Rest wird bei jedem x. Sonderzeichen vor lauter Schreibwut die Umschreibung schlichtweg vergessen.

                Von daher ist es (allgemein ausgedrückt) meines Erachtens nach immer sinnvoller, die Ganz-oder-gar-nicht-Lösungen anzupreisen. Die Ausnahmeregelung sollte sich jeder selbst erarbeiten - nur dann behält man sie auch.

                Gruß,
                  soenk.e

  3. Hallo Ihr,

    ich habe folgendes Problem und weiß momentan nicht an was es liegen könnte. Auf meiner Vereinsweb-Site, die mit einem Tabellenlayout aufgebaut ist, will ich über eine Schaltfläche ein kleines Fenster aufmachen, daß mir eine Anfahrtsskizze zeigt.
    Geht auch alles soweit, nur daß die Tabelle, die sich in diesem Fenster befindet, nicht in der mitte des Fensters steht, abwohl ich zentrisch positionier. Ich habe mit IE 6.0 immer oben und links einen Rand von ca. 10-15px. Vielleicht kann mir jemand helfen, da ich auch noch in der Lernphase bin.

    Dein Problem hat nichts mit Javscript zu tun, sondern mit CSS/HTML.

    Guck mal bei selfhtml unter CSS wie man Seitenränder wegkriegt.

    <script language="JavaScript">

    Es heißt
    <script type="text/javascript">

    <!--
      function oeffnefenster (url) {
     var fenster=window.open(url, "fenster1", "width=407,height=430,status=no,scrollbars=auto,resizable=no");
    }
    }

    // -->

    <td width=104 height="14"><a href="javascript:oeffnefenster('anfahrt_11.htm')" onMouseOver="changeImages('image1', 'image1on')" onMouseOut="changeImages('image1', 'image1off')"><img name="image1" src="pics/fliegergruppe.gif" alt="Fliegergruppe" width=104 height=14 border=0></a></td>

    Du kannst diesen Link auch für Leute ohne JS nutzbar machen ohne das du Nachteile hast (Genau genommen sogar nur Vorteile):

    <a
    href="anfahrt_11.htm"
    onclick="oeffnefenster(this.href);return false;"
     ....>
    <img name="image1" src="pics/fliegergruppe.gif" alt="Fliegergruppe" width=104 height=14 border=0></a>

    Das return false nicht vergessen!

    image1on = new Image();
      image1on.src = "pics/zoom-_over.gif";

    image2on = new Image();
      image2on.src = "pics/drucken_over.gif";

    image3on = new Image();
      image3on.src = "pics/zoom+_over.gif";

    image1off = new Image();
      image1off.src = "pics/zoom-.gif";

    image2off = new Image();
      image2off.src = "pics/drucken.gif";

    image3off = new Image();
      image3off.src = "pics/zoom+.gif";

    Du solltest dich mal mit arrays auseinandersetzten.

    }

    function changeImages() {
      if (document.images) {
        for (var i=0; i<changeImages.arguments.length; i+=2) {
          document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");

    eval ist evil!

    document[changeImages.arguments[i]].src = changeImages.arguments[i+1].src;

    macht das gleiche.

    Struppi.