Zeromancer: Popup mittig ausrichten

Guten Morgen,

für meine popups, in denen ich Bilder in Originalgröße lade, brauche ich Hilfe.

Unter bestimmten Umständen, die ich nicht nachvollziehen kann, öffnet sich das popup am unteren Bildschirmrand, manchmal ist es ganz weg und läßt sich nicht öffnen.

Was mich interessiert: Wie modifiziere ich das vorhandene Skript, so dass sich das Fenster immer in der Mitte des Bildschirmes öffnet?

----------------------------------------

function ViewImage(bildurl,b,h,bildtitel)
{
var eigenschaft,sbreite,shoehe,fenster,b,h;

// stellt die Bildschirmabmessungen fest
var ns6 = (!document.all && document.getElementById);
var ie4 = (document.all);
var ns4 = (document.layers);

if(ns6||ns4) {
sbreite = innerWidth;
shoehe = innerHeight;
}
else if(ie4) {
sbreite = document.body.clientWidth;
shoehe = document.body.clientHeight;
}

x = (sbreite-b)/2;
y = (shoehe-h)/2;

eigenschaften="left="+x+",top="+y+",screenX="+x+",screenY="+y+",width="+b+",height="+h+",menubar=no,toolbar=no";

fenster=window.open("","",eigenschaften);
fenster.focus();
fenster.document.open();
with (fenster) {
  document.write('<html><head>');
  document.write("<script type='text/javascript' language='JavaScript'>");
  document.write("function click() { window.close(); } ");  // bei click  schliessen
  document.write("document.onmousedown=click ");
  document.write("</script>");
  document.write('<title>'+ bildtitel +'</title></head>');
  document.write('<body onblur="window.close()" '); // bei Focusverlust schliessen
  document.write('marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">');
  document.write('<center>');
  document.write('<img src="'+ bildurl +'"border="0">');
  document.write('<center>');
  document.write('</body></html>');
  fenster.document.close();
}
}

Auch wenn es meist nicht hilft: Bitte keine Javascript-feindlichen Äußerungen; ja ich denke auch an die Besucher ohne JS; ja, ich möchte einfach nur Hilfe.

Mit freundlichen Grüßen

André

  1. Probiers doch mal  mit meinem Script:

    function popup(uebergabewert) {
     width  = screen.width -280;
     height = width / 16 * 9;
     left   = (screen.width - width) / 2;
     topPos = (screen.height - height) / 2;
     param  = 'resizable=no,menubar=no,scrollbars=yes';
     param += ', left=' + left;
     param += ', top=' + topPos;
     param += ', width=' + width;
     param += ', height=' + height;
     link = 'http://www.google.de';
     window.open(link, "profile" + profileid, param);
    }

    Am wichtigsten sind für dich die Parameter left und top...

    Hoffe das hilft dir soweit.

    1. Hallo,

      Probiers doch mal  mit meinem Script:
      Am wichtigsten sind für dich die Parameter left und top...

      Vielen Dank schon mal. Hatte schon die Befürchtung, dass ich gleich bei der ersten Antwort zerrissen werden. ;-

      Mit freundlichen Grüßen

      André

      1. Vielen Dank schon mal. Hatte schon die Befürchtung, dass ich gleich bei der ersten Antwort zerrissen werden. ;-

        Ach was ;) So schlimm sind wir hier doch auch nicht ;)

        Grüße
        SF2k

        1. Hallo,

          Ach was ;) So schlimm sind wir hier doch auch nicht ;)

          Du hast keine Ahnung, Steinigungen sind hier an der Tagesordnung... ;-)

          Mit freundlichen Grüßen

          André

          1. Ach was ;) So schlimm sind wir hier doch auch nicht ;)

            Du hast keine Ahnung, Steinigungen sind hier an der Tagesordnung... ;-)

            *FG* Naja für meinen Thread gestern bzgl. des Homepages Votings für eine fremde Seite hab ich sicherlich auch paar Minuspunkte kassiert ;) Egal ;)

            Grüße
            SF.

  2. Hallo André!

    Was mich interessiert: Wie modifiziere ich das vorhandene Skript, so dass sich das Fenster immer
    in der Mitte des Bildschirmes öffnet?

    Ich verwende folgende Funktion:

    ---8<---------------------------------------------------------------------------

    function WindowPopUp(url, breite, hoehe) {
          x = (screen.availWidth/2)-(breite/2);
          y = (screen.availHeight/2)-(hoehe/2);

    PopUpWindow = window.open(url,'','width='+breite+',height='+hoehe+',left='+x+',top='+y+',screenX='+x+',screenY='+y);

    PopUpWindow.focus();
       }

    ---8<---------------------------------------------------------------------------

    Die Zentrierung die in der o.g. Funktion verwendet wird, funktioniert mindestens im IE und Mozilla.

    Grüsse,

    Sky

    1. Hallo Sky,

      Ich verwende folgende Funktion:

      Soweit so gut. An der von mir verwendeten Funktion schätze ich das Schließen des Popups beim Verlust des Focus. Das ist sehr praktisch. Man muss nicht selbst schließen.

      Die Zentrierung die in der o.g. Funktion verwendet wird, funktioniert mindestens im IE und Mozilla.

      Das llß mal nicht die Opera-User hören. ;-)

      Mit freundlichen Grüßen

      André

  3. Hi,

    var ns6 = (!document.all && document.getElementById);
    var ie4 = (document.all);
    var ns4 = (document.layers);

    Auch wenn es meist nicht hilft: Bitte keine Javascript-feindlichen Äußerungen; ja ich denke auch an die Besucher ohne JS; ja, ich möchte einfach nur Hilfe.

    aber Du vergißt alle Nutzer moderner Browser. Warum?

    Übrigens zum zentrierten öffnen noch einen: http://www.1ngo.de/web/popup.html.

    freundliche Grüße
    Ingo

    1. Moin Ingo,

      aber Du vergißt alle Nutzer moderner Browser. Warum?

      mmh... was alte browser konnten, sollten doch neue auch noch können?!

      Übrigens zum zentrierten öffnen noch einen: http://www.1ngo.de/web/popup.html.

      Aha:

      <a href="popup.html" onclick="return PopUp(788,516,this.href)"> Demo </a>
      ... Sofern das PopUp geöffnet werden konnte, verhindert der negierte Rückgabewert false, ...

      Wo ist der denn, der negierte Rückgabewert? Kenne sonst leider nur return false am Ende.

      Mit freundlichen Grüßen

      André

      1. Hi,

        aber Du vergißt alle Nutzer moderner Browser. Warum?

        mmh... was alte browser konnten, sollten doch neue auch noch können?!

        oops, sorry, ich hatte die Negation hier übersehen:
        var ns6 = (!document.all && document.getElementById);

        <a href="popup.html" onclick="return PopUp(788,516,this.href)"> Demo </a>
        ... Sofern das PopUp geöffnet werden konnte, verhindert der negierte Rückgabewert false, ...

        Wo ist der denn, der negierte Rückgabewert? Kenne sonst leider nur return false am Ende.

        und den hattest Du jetzt übersehen ;-)

        return !Fenster;
        liefert false zurück, wenn das Script bis hierhin fehlerfrei lief.

        freundliche Grüße
        Ingo

        1. Hallo,

          return !Fenster;
          liefert false zurück, wenn das Script bis hierhin fehlerfrei lief.

          Und wieder was gelernt!

          Mit freundlichen Grüßen

          André