Disaster: Warum birngt dieses JavaScript alle Browser zum abstürzen?

Hallo!

Ich wollte mit diesem JavaScript den höchsten Referrer herausbekommen... doch mit diesem Script stürzen alle Browser ab:

var from = 'document.referrer'
while (eval('parent.' + from)) {
 from = 'parent.' + from
}

Hat da jemand eine Idee?

Disaster

  1. Hi,

    Hat da jemand eine Idee?

    alert(top.parent.parent.parent.parent.parent.parent.parent.parent.parent)

    Cheatah

    1. Hi,

      Hat da jemand eine Idee?

      alert(top.parent.parent.parent.parent.parent.parent.parent.parent.parent)

      Cheatah

      naja also so ein unendliches langes parent sieht aber nicht schön aus... ich hätte gerne eine saubere Lösung oder gibt es eine Möglichkeit immer direkt den parent vom obersten Frame zu erfahren?

      alà document.parents[0].referrer oder so?

      Disaster

      1. Moin,

        naja also so ein unendliches langes parent sieht aber nicht schön aus... ich hätte gerne eine saubere Lösung oder gibt es eine Möglichkeit immer direkt den parent vom obersten Frame zu erfahren?

        1. Was hat referer mit parent zu tun? Ersteres ist für gewöhnlich ein URL, letzteres eine Referenz auf ein Fensterobjekt.
        2. Schau dir mal das Objekt top an, da liegt garantiert das alleräusserste Fenster drin.

        --
        Henryk Plötz
        Grüße aus Berlin

        1. Moin,

          1. Schau dir mal das Objekt top an, da liegt garantiert das alleräusserste Fenster drin.

          --
          Henryk Plötz
          Grüße aus Berlin

          Perfekt! Vielen Dank für die Hilfe!

          Disaster

      2. Hi,

        naja also so ein unendliches langes parent sieht aber nicht schön aus...

        was ich Dir damit sagen wollte: Probier es mal aus, und füge vielleicht noch ein paar Dutzend parent dazu. Du wirst sehen, dass _immer_ ein gültiges Objekt rauskommt - deswegen ist Dein Code in einer Endlosschleife gelandet, die früher oder später einen Stack-Überlauf zur Folge hat. Das hat den Absturz verursacht.

        Eine Lösung hast Du ja mittlerweile.

        Cheatah