Antje Hofmann: eval() richtig verwenden?

Beitrag lesen

function twoWins(target1, url1, target2, url2) {
  eval("document."+target1+".location.href = " + url1);
  eval("document."+target2+".location.href = " + url2);
}

Die Benutzung von eval() ist hier voellig korrekt. Aber jetzt ueberleg Dir doch mal, wie man denn auf die location eines anderen Frames zugreift. Etwa mit document.Framename.location.href? Waere mir jedenfalls neu. Ich bin mehr fuer parent.Framename.location.href.

Calocybe

Hallo David, hallo Roland

eval() ist an dieser Stelle völlig überflüssig. Stellt den Aufruf doch ganz einfach so dar:

<!--
  function twoWins(target1, url1, target2, url2)
  {
  parent[target1].location.href = url1;
  parent[target2].location.href = url2;
  }

//-->

Ich versuche es mal zu erläutern, warum man darauf verzichten kann. Verbesserungen/Ergänzungen sind mehr als erwünscht.

location.href ist bereits ein Objekt. Ein Unterobjekt des Objektes window oder in diesem Fall ein Unterobjekt des Objektes Frames.
parent ist ein reservierter Fenstername zum Ansprechen von Fenster und parent.framesname dann ein untergeordnetes Fenster. Framesname wird erst zum Fensterobjekt in Verbindung mit parent. Deshalb kann der Framename problemlos als String übergeben werden.

Ich habe mir überlegt, daß dieses ja auch für normale framefreie Fenster gelten müßte, die von einer Seite geöffnet werden. Dies ist auch tatsächlich so. Der gleiche Aufruf (Fenster wurde natürlich vorher geöffnet) jedoch diesmal mit einer Fenstervariablen als Übergabewert, ändert ein geöffnetes Fenster.

Viele Grüße

Antje