nansen: if (opener.location.....else....??

hi!

hier eine funktion die ein popup schliessen soll, falls es von der index aufgerufen wurde,
oder zur index gehen soll falls nicht:

function Gohome(){
var ho = "index.htm";
if(opener.location.href = ho)
self.close();

else
window.location.replace(ho);
}

aufgeruffen durch:

<a href="#" onClick="javascript:Gohome()">Fenster schliessen - Startseite</a>

die frage an einen freundlichen javascriptexperten lautet:

"warum funktioniert dieser script nicht?"

ebenfalls freundlich grüßt

nansen

  1. Hey,

    hast du es schon mal mit document.referrer probiert!?
    (siehe Bsp. in SelfHTML für Erklärung)

    Gruß

    1. hi!

      hast du es schon mal mit document.referrer probiert!?

      ein guter tipp!

      meine funktion habe ich so umgemodelt:

      function Gohome(){
      var ho = "index.htm";
      if(document.referrer != ho){
      window.location.href=ho;
      target ="_self";
      }
      else
      self.close();
      }

      leider funktioniert das selbst schliessen nicht.
      mal sehen was der abend noch so mit sich bringt

      nansen

      1. hi!

        mal sehen was der abend noch so mit sich bringt

        und der brachte die lösung:

        mein fehler war der aufruf und nicht die funktion selbst.
        also:
        eine funktion die ein popup schliessen soll, falls es von der index aufgerufen wurde, oder zur index gehen soll falls nicht:

        function Gohome(){
        var ho = "index.htm";
        if (opener.location.href = ho)
        self.close();
        else
        window.location.replace(ho);
        }

        aufgeruffen durch:
        <a href="#" onClick="javascript:Gohome()">Fenster schliessen - Startseite</a>
        funktioniert nicht

        aber
        aufgeruffen durch:
        <a href="index.htm" onClick="javascript:Gohome()">Fenster schliessen - Startseite</a>
        funktioniert sogar mit NS4.5.

        wenn ich ein vergleichoperator "==" (opener.location.href == ho)nehme funktioniert es nicht, auch nicht mit (document.referrer == ho)

        nun folgt die nächste frage an dem bekantlich freundlichen JSexperten:
        "warum??"

        nansen

        1. Moin Moin !

          aufgeruffen durch:
          <a href="#" onClick="javascript:Gohome()">Fenster schliessen - Startseite</a>
          funktioniert nicht

          Darf/Kann auch nicht funktionieren ...

          aber
          aufgeruffen durch:
          <a href="index.htm" onClick="javascript:Gohome()">Fenster schliessen - Startseite</a>
          funktioniert sogar mit NS4.5.

          ... und hier ist es das ganz normale HTML, das funktioniert.

          Lies bitte mal nach, was onclick als Wert bekommt: Javascript-Code, keine URL! Sprich: das "javascript:" muß aus dem onclick raus. Wenn Du dann noch hinter Gohome() ein Semikolon und "return false" setzt, landen Javascript-fähige Browser in der Gohome()-Funktion, der rest folgt schlicht dem href="index.htm" zur index.htm.

          Alexander

          --
          <!--#include file="signature.html" -->
          1. hi Alexander!

            Lies bitte mal nach, was onclick als Wert bekommt: Javascript-Code, keine URL! Sprich: das "javascript:" muß aus dem onclick raus. Wenn Du dann noch hinter Gohome() ein Semikolon und "return false" setzt, landen Javascript-fähige Browser in der Gohome()-Funktion, der rest folgt schlicht dem href="index.htm" zur index.htm.

            cool! danke fur die freundliche erklärung!
            wieder was dazugelernt.

            grüsse

            nansen

  2. n'Abend.

    if(opener.location.href = ho)

    "warum funktioniert dieser script nicht?"

    Weil "=" kein Vergleichsoperator ist, "==" hingegen schon.

    Gruß
    Norbert

  3. Hi,

    hier eine funktion die ein popup schliessen soll, falls es von der index aufgerufen wurde,
    oder zur index gehen soll falls nicht:

    function Gohome(){
    var ho = "index.htm";
    if(opener.location.href = ho)

    1. Du willst vergleichen, nicht zuweisen
    2. Du willst nicht auf Identität mit "index.htm" vergleichen. Laß Dir mal per alert(opener.location.href) ausgeben, womit Du vergleichen solltest...

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.
    Der Pessimist: Das Glas ist halbleer.
    Der Ingenieur: Das Glas ist doppelt so groß wie nötig.