Zepyhda: "window.open" -> Hauptdokument scrollt an Seitenanfang

Moinsen,

ich habe da ein kleines Problem bei meiner Homepage. Und zwar habe ich im Text mehrere kleine Bilder eingefügt. Per Mausklick auf eines der Bilder öffnet sich ein neues PopUp-Fenster mit dem vergrößerten Bild.
Das ganze habe ich über Javascript und die Funktion "window.open" realisiert.
Das Problem ist nun, das jedesmal wenn ich ein Bild anklicke, das "Hauptdokument" automatsich an den Seitenanfang gescrollt wird.
Man muss sich das so vorstellen, ich habe eine Seite über meine Hunde. Wenn ich die Seite ganz nach unten scrolle und dort das Bild per Mausklick vergrößert haben will, dann öffnet sich zwar richtig das neue PopUp-Fenster mit dem Bild, ABER außerdem wird die Hauptseite (die mit dem text über meine Hunde) automatsich auf den Seitenanfang geschoben.
Und ehrlich, ich werde darasu irgendwie nicht schlau, weil das Problem ist mir neu ...

Wer nicht verstanden hat wo mein Problem liegt, der schaut einfach hier -> Testseite

Für Antworten wäre ich dankbar

  1. Hi,

    Das ganze habe ich über Javascript und die Funktion "window.open" realisiert.
    Das Problem ist nun, das jedesmal wenn ich ein Bild anklicke, das "Hauptdokument" automatsich an den Seitenanfang gescrollt wird.

    <a href="#" OnClick="javascript: fenster(...

    Schreibe onclick klein,
    lasse die Funktion false zurueckgeben,
    und ergaenze im onclick ein return vor dem Funktionsauruf.

    Oder noch besser, verlinke wirklich auf das Bild(-Dokument), welches angezeigt werden soll, und lasse die Funktion den negierten Rueckgabewert von window.open zurueckgeben - dann funktioniert das ganze mit grosser Wahrscheinlichkeit auch dann noch, wenn der Nutzer einen Popup-Blocker verwendet, der auch angeforderte Popups blockt.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hmm,
      erstmal danke für die schnelle Antwort, nur irgendwie verstehe ich sie nicht ganz, bzw. weiß nicht wie ich das ganze jetzt praktisch umzusetzen habe.

  2. Hallo

    Das ganze habe ich über Javascript und die Funktion "window.open" realisiert.
    Das Problem ist nun, das jedesmal wenn ich ein Bild anklicke, das "Hauptdokument" automatsich an den Seitenanfang gescrollt wird.

    Wer nicht verstanden hat wo mein Problem liegt, der schaut einfach hier -> Testseite

    Tja, das muss ja. Mit ...

    <a href="#" OnClick="javascript: fenster('foto.php?bild=hund_resi_jung_05&ordner=hunde','Rauhaardackel - Resi',600,425)">

    ... öffnest du per JavaScript über die Funktion fenster() das Popup. Da aber weder in der Funktion selbst noch in deren Aufruf im Link false zurückgegeben wird, wird zusätzlich das HTML-Linkziel (href="#") ausgeführt, was zu dem beobachteten Verhalten führt. Zudem ist "javascript:" im onclick-Handler (der klein geschrieben wird) unnötig.

    Desweiteren wird niemand, dem kein JavaScript zur Verfügung steht, jemals die großen Versionen der Bilder zu Gesicht bekommen, von Anwendern, die PopUps blocken mal ganz abgesehen.

    <a href="foto.php?bild=hund_resi_jung_05&ordner=hunde" OnClick="fenster(this,'Rauhaardackel - Resi',600,425); return false;">
    ...behebt dein Problem. Wenn du das return false; in der Funktion fenster() notierst, brauchst du es nichtmal in den onclick-Handler reinschreiben.

    Tschö, Auge

    --
    Die deutschen Interessen werden am Liechtenstein verteidigt.
    Veranstaltungsdatenbank Vdb 0.2
    1. <a href="foto.php?bild=hund_resi_jung_05&ordner=hunde" OnClick="fenster(this,'Rauhaardackel - Resi',600,425); return false;">

      also ich würds so schreiben ;)
      <a href="foto.php?bild=hund_resi_jung_05&amp;ordner=hunde" onclick="fenster(this.href,'Rauhaardackel - Resi',600,425); return false;">

  3. @@Zepyhda:

    […] dann öffnet sich zwar richtig das neue PopUp-Fenster mit dem Bild, ABER außerdem wird die Hauptseite (die mit dem text über meine Hunde) automatsich auf den Seitenanfang geschoben.

    Wenn du kein Ziel anspringen willst, solltest du kein 'href'-Attribut setzen. Allerdings wäre dann auch der Einsatz des 'a'-Elements fragwürdig. Andere Elemente dürfen auch 'onclick'-Attribute haben.

    Allerdings ist fragwürdig, warum die großen Bilder nur mit JavaScript erreichbar sein sollten. Ins 'href'-Attribut gehört der jeweilige URI des großen Bildes. Als letzte Anweisung bei 'onclick' gibst du 'return false;' an; dann wird – wenn JavaScript ausgeführt wird – nur der JavaScript-Code im 'onclick'-Eventhandler ausgeführt, nicht aber dem Link gefolgt.

    Achja, der Wert des 'onclick'-Eventhandler ist JavaScript-Code. In solchem hat 'javascript:' die Bedeutung eines Labels. Da es aber in JavaScript keine Sprungbefehle gibt, ist ein solches gänzlich überflüssig.

    <a href="foto.php?bild=hund_resi_schlafen_02&amp;ordner=hunde" onclick="[code lang=javascript]fenster('foto.php?bild=hund_resi_schlafen_02&amp;ordner=hunde','Rauhaardackel - Resi',600,425); return false;">[/code]

    Live long and prosper,
    Gunnar

    --
    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
    1. <a href="foto.php?bild=hund_resi_schlafen_02&amp;ordner=hunde" onclick="[code lang=javascript]fenster('foto.php?bild=hund_resi_schlafen_02&amp;ordner=hunde','Rauhaardackel - Resi',600,425); return false;">[/code]

      gibts einen grund warum du die ressource für das neue fenster nicht mit this.href übergibst?

      1. [latex]Mae  govannen![/latex]

        <a href="foto.php?bild=hund_resi_schlafen_02&amp;ordner=hunde" onclick="[code lang=javascript]fenster('foto.php?bild=hund_resi_schlafen_02&amp;ordner=hunde','Rauhaardackel - Resi',600,425); return false;">[/code]
        gibts einen grund warum du die ressource für das neue fenster nicht mit this.href übergibst?

        Eventhandlern generell nur this zu übergeben halte ich für geeigneter. Spätestens wenn man die Funktion irgendwann erweitern will und auf andere Eigenschaften zugreift , muß man sonst alles umschreiben.

        Cü,

        Kai

        --
        Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
        selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
        Mein Selfhtml-Kram
        1. Eventhandlern generell nur this zu übergeben halte ich für geeigneter. Spätestens wenn man die Funktion irgendwann erweitern will und auf andere Eigenschaften zugreift , muß man sonst alles umschreiben.

          gutes argument, werd ich mir merken ;)

        2. Spätestens wenn man die Funktion irgendwann erweitern will und auf andere Eigenschaften zugreift , muß man sonst alles umschreiben.

          spätestens wenn man die Funktion erweitern will oder auf andere Eigenschaften zugreift, sollte man HTML und JS-Logik trennen, Unobtrusive JavaScript schreiben und richtiges Event-Handling verwenden. ;)

          Mathias

          1. [latex]Mae  govannen![/latex]

            Spätestens wenn man die Funktion irgendwann erweitern will und auf andere Eigenschaften zugreift , muß man sonst alles umschreiben.

            spätestens wenn man die Funktion erweitern will oder auf andere Eigenschaften zugreift, sollte man HTML und JS-Logik trennen, Unobtrusive JavaScript schreiben und richtiges Event-Handling verwenden. ;)

            Natürlich. Ich persönlich halte es grundsätzlich so, allerdings würde es hier in den meisten Fällen zu weit führen, ein Beispiel, das mit onxxx-Attribut geliefert wird, diesbezüglich umzugestalten. Wünschenswert wäre es sicherlich hin und wieder.

            Cü,

            Kai

            --
            Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
            selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
            Mein Selfhtml-Kram
  4. Hallo,

    Ich habe mir mit Firebug mal den JS-QT angeguckt, und mir ist aufgefallen, dass du für das Fenster ein top und einen left parameter angibst. Vllt weglassen?

    mfg, Flo

    --
    Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
    sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
    *Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
  5. Das Problem ist nun, das jedesmal wenn ich ein Bild anklicke, das "Hauptdokument" automatsich an den Seitenanfang gescrollt wird.

    Das Problem ist, dass man im IE einen JS-Fehler statt des Popups bekommt. Ursache sind die Leerzeichen im Fensternamen ("'Rauhaardackel - Resi"). Wenn Du die zusätzlich zu den bereits erhaltenen Tipps noch weglässt, sollte es auch im IE wie gewünscht funktionieren.

    Siechfred