alfie: Navigator 4.7x

Hallo!

Ich verwende folgenden Script um Fotos in einem PopUp zu laden:

function PopUp(URI,B,H,TI,HG,INFO)
{
eigensch="left=20,top=15,width="+(B+30)+",height="+(H+40);
text="<html><head><title>"+TI+"</title></head><body style='text-align:center' bgcolor='"+HG+"'";
text+="><img src='"+URI+"' title='"+INFO+"'>";
text+="<input type='button' value='Fenster schliessen' name='B1' onclick='self.close()'>";
text+="</body></html>";
fenster=window.open("", "fenster", eigensch);
fenster.document.open();
fenster.document.write(text);
fenster.focus();
fenster.document.close();
}

Der Code funktioniert im IE6, Mozilla 1.4, Opera 7.22; im Navigator 4.76 wird der Button zum schliessen des Fensters nicht angezeigt. Warum?

mfg Alfie

  1. Hi,

    steht Dein Code in einem <script>-Bereich?

    text="<html><head><title>"+TI+"</

    Wenn ja, dann hast Du an exakt dieser Stelle jenen Bereich durch die Zeichenkette "</" beendet.

    fenster=window.open("", "fenster", eigensch);
    Der Code funktioniert im IE6, Mozilla 1.4, Opera 7.22; im Navigator 4.76 wird der Button zum schliessen des Fensters nicht angezeigt. Warum?

    Weil ein Fenster ohne URL kein document besitzt. Die Fehlerkorrekturen anderer Browser sind nicht von Belang.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah!

      steht Dein Code in einem <script>-Bereich?

      wird in <head> auf eine externe Datei referenziert, zB:
      <script type="text/javascript" src="./js/PopUp.js"></script>

      Der Aufruf erfolgt im <body> zB mit:
      <a href="foo" target="_blank" onclick="PopUp('foo',Breite,Hoehe,'Titel des Fensters','Hintergrundfarbe','title-Attribut');return false;" onmouseover="self.status='Text in der Stauszeile';return true;" onmouseout="self.status='';return true;"><img src='bar' width="xxx" height="yy" alt="Foto: balabla" title="blabla" border="0"></a>

      fenster=window.open("", "fenster", eigensch);

      Weil ein Fenster ohne URL kein document besitzt. Die Fehlerkorrekturen anderer Browser sind nicht von Belang.

      Die URI wird als Parameter übergeben, ist daher vorhanden.

      mfg Alfie

      P.S. Rouvens Tip mit <form></form> hilft.

      1. Hi,

        steht Dein Code in einem <script>-Bereich?
        wird in <head> auf eine externe Datei referenziert, zB:

        dann besteht nicht die Gefahr, dass der JavaScript-Code ungültig wird und Teile von ihm in den HTML-Code rutschen. Dennoch empfehle ich, die Zeichenfolge "</" zu vermeiden.

        [...] onmouseover="self.status='Text in der Stauszeile';return true;" onmouseout="self.status='';return true;">

        Warum manipulierst Du die Statuszeile?

        fenster=window.open("", "fenster", eigensch);
        Die URI wird als Parameter übergeben, ist daher vorhanden.

        Da ist keine URI, sondern ein Leerstring.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo!

          steht Dein Code in einem <script>-Bereich?
          wird in <head> auf eine externe Datei referenziert, zB:
          dann besteht nicht die Gefahr, dass der JavaScript-Code ungültig wird und Teile von ihm in den HTML-Code rutschen. Dennoch empfehle ich, die Zeichenfolge "</" zu vermeiden.

          ok, Maskierung mit </title> funktioniert.

          [...] onmouseover="self.status='Text in der Stauszeile';return true;" onmouseout="self.status='';return true;">
          Warum manipulierst Du die Statuszeile?

          Über das title-Attribut des Thumbnails wird das Copyright des Fotografen angezeigt, in der Statuszeile Informationen zum Bild selbst. Wenn ich alle Informationen im title unterbringen will, wird es uU sehr lang, wobei alles in "einer Wurst" angezeigt wird. Mit title+Eventhandler kann ich 2 inhaltlich unterschiedliche Informationen eindeutig voneinander trennen.

          fenster=window.open("", "fenster", eigensch);
          Die URI wird als Parameter übergeben, ist daher vorhanden.
          Da ist keine URI, sondern ein Leerstring.

          Ja klar, richtig ist fenster=window.open(URI,"fenster",eigensch);

          mfg Alfie

          1. Hallo!

            dann besteht nicht die Gefahr, dass der JavaScript-Code ungültig wird und Teile von ihm in den HTML-Code rutschen. Dennoch empfehle ich, die Zeichenfolge "</" zu vermeiden.

            ok, Maskierung mit </title> funktioniert.

            P.S. aber nicht im NS4.7, der stürzt leider ab ;-)

            mfg Alfie

          2. Hi,

            [...] onmouseover="self.status='Text in der Stauszeile';return true;" onmouseout="self.status='';return true;">
            Warum manipulierst Du die Statuszeile?
            Über das title-Attribut des Thumbnails wird das Copyright des Fotografen angezeigt, in der Statuszeile Informationen zum Bild selbst.

            welche Informationen Du auch immer zu vermitteln suchst, bitte missbrauche dafür nicht die Statuszeile. Der Browser liefert seinem Benutzer mittels ihr wertvolle Informationen, die zu manipulieren Dir nicht zusteht.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hallo!

              welche Informationen Du auch immer zu vermitteln suchst, bitte missbrauche dafür nicht die Statuszeile. Der Browser liefert seinem Benutzer mittels ihr wertvolle Informationen, die zu manipulieren Dir nicht zusteht.

              ...Dir nicht zusteht...: oh lala!
              Ich liefere Informationen zum Bild, auf die die meisten Designer "vergessen", nämlich das Copyright und den Aufnahmeort. Ich halte das für *wertvoller* als "http://domain/pics/foo.jpg"...

              mfg Alfie

              1. Tach,

                ...Dir nicht zusteht...: oh lala!
                Ich liefere Informationen zum Bild, auf die die meisten Designer "vergessen", nämlich das Copyright und den Aufnahmeort. Ich halte das für *wertvoller* als "http://domain/pics/foo.jpg"...

                diese Information ist interessant, deshalb sollte sie auch an einer Stelle stehen, so daß ich sie sehen kann. Das Ändern der Statuszeile ist bei mir nicht erlaubt; damit stehe ich wahrscheinlich nicht alleine da.

                mfg
                Woodfighter

              2. Hi,

                Der Browser liefert seinem Benutzer mittels ihr wertvolle Informationen, die zu manipulieren Dir nicht zusteht.
                Ich halte das für *wertvoller* als "http://domain/pics/foo.jpg"...

                genau diese Entscheidung ist es, die Dir nicht zusteht.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo!

    text+="><img src='"+URI+"' title='"+INFO+"'>";
    text+="<input type='button' value='Fenster schliessen' name='B1' onclick='self.close()'>";
    text+="</body></html>";

    Abgesehen von dem was Cheatah gesagt hat zeigen meine Erfahrungen von damals, dass Netscape nicht so gerne Buttons anzeigt, sofern sie nicht von einem <form>-Tag umschlossen sind - War jedenfalls bei mir häufig der Fehler. Einfach mal das leere Tag um den Button drumsetzen...

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hallo!

      ...zeigen meine Erfahrungen von damals, dass Netscape nicht so gerne Buttons anzeigt, sofern sie nicht von einem <form>-Tag umschlossen sind - War jedenfalls bei mir häufig der Fehler. Einfach mal das leere Tag um den Button drumsetzen...

      Das wars! Sieht zwar nicht sehr schön aus (Netscape 4.7 erzeugt im Gegensatz zu den anderen Browsern für <form> oberhalb des Buttons eine Leerzeile), aber immerhin!

      Besten Dank!

      mfg Alfie

      1. Hallo!

        Korrektur. Vergessen, die Seiten zu aktualisieren, d.h. Leerzeile erscheint bei allen Browsern, ist daher mit zusätzlicher Höhe des Fensters leicht zu korrigieren und sieht also überall gleich aus.

        mfg Alfie

        1. Hi,

          ansonsten:
          <form style="padding: 0px; margin: 0px;">

          --> Sollte zumindest bei den CSS-fähigen Browsern reichen...

          MfG
          Rouven

          --

          -------------------
          ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
          1. Hallo!

            <form style="padding: 0px; margin: 0px;">
            --> Sollte zumindest bei den CSS-fähigen Browsern reichen...

            Ja klar, aber damit geht NS4.7 wieder sterben. Jetzt noch eine Browserweiche einzubauen, ist mir der Aufwand eigentlich nicht mehr wert ;-)

            mfg Alfie

            1. Hi,

              Ja klar, aber damit geht NS4.7 wieder sterben.

              ähm, nö, sollte er eigentlich nicht. Im Prinzip sollte er das ignorieren, er sähe dann nur nicht so toll aus wie die anderen Browser.
              Aber das mit der Fenstergröße ist natürlich die andere Alternative...

              MfG
              Rouven

              --

              -------------------
              ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
              1. Hallo!

                Ja klar, aber damit geht NS4.7 wieder sterben.
                ähm, nö, sollte er eigentlich nicht. Im Prinzip sollte er das ignorieren, er sähe dann nur nicht so toll aus wie die anderen Browser.

                Damit hast du natürlich recht. Wiedereinmal zuviel zugleich geändert ;-)

                @Cheatah
                Der Absturz im NS4.7 war durch die Übergabe der URI bedingt (fenster=window.open(URI,"fenster",eigensch); statt fenster=window.open("","fenster",eigensch);).

                Fürs Archiv: folgender Code funktioniert im IE6, Moz1.4, Opera7.22 und NS4.75:

                function PopUp(URI,B,H,TI,HG,INFO)
                {
                eigensch="left=20,top=15,width="+(B+30)+",height="+(H+65);
                text="<html><head><title>"+TI+"</title></head><body style='text-align:center' bgcolor='"+HG+"'";
                text+="><img src='"+URI+"' title='"+INFO+"'>";
                text+="<form style='margin:14px;'><input type='button' value='Fenster schliessen' name='B1' onclick='self.close()'></form>";
                text+="</body></html>";
                fenster=window.open("","fenster",eigensch);
                fenster.document.open();
                fenster.document.write(text);
                fenster.focus();
                fenster.document.close();
                }

                mfg Alfie