Florian Bluhm: Abfrage aus Popup-Fenster

Hallöchen Forum.
ich hab hier folgendes Problem:
Ich öffne per var fenster=window.open... ein neues fenster und möchte dann über fenster.document.links.length die Anzahl der in der Seite enthaltenen Verlinkungen auslesen. Allerdings liest Javascript die schon aus bevor die Seite geleden ist und liefert deshalb immer 0 als ergebnis.
Wie kann ich java dazu bringen zu warten bis die seite geladen ist?

Hier der Code:
function kvchk(nummer){
var fenster=window.open( 'nummer', 'fenster', 'width=100,height=100,toolbar=0,location=0,directories=0,status=0,menuBar=0,scrollBars=0,resizable=0' );
self.focus();
if (fenster.document.links.length < 5) {
fenster.close();
alert(fenster.document.links.length);
}
else
  fenster.close();
}

  1. Hi,

    Ich öffne per var fenster=window.open... ein neues fenster und möchte dann über fenster.document.links.length die Anzahl der in der Seite enthaltenen Verlinkungen auslesen. Allerdings liest Javascript die schon aus bevor die Seite geleden ist und liefert deshalb immer 0 als ergebnis.

    Dann zähle doch in der sich öffnenden Seite im Body-onLoad und schreibe die Werte zurück ins Öffner-Fenster. (Zugriff über opener.)

    HTH

    ortenau-s-bahner

    --
    ss:} zu:$ ls:} fo:| de:] va:) ch:? sh:( n4:# rl:? br:> js:| ie:( fl:{ mo:)
    1. Leider habe ich keine Möglichkeit an der zu ladenden Seite irgendetwas zu verändern. Ich muss also mit dem auskommen was ich in dem Skriptbereich der Ausgangsseite machen kann.
      Trotzdem danke für deine Hilfe.
      MfG
      Florian

  2. Hallo, Florian Bluhm!

    Wie kann ich java dazu bringen zu warten bis die seite geladen ist?

    java != javascript

    wenn die seite am ende irgend etwas markantes enthält, wie z.b. ein bild, das immer gleich bleibt, dann kannst du mit while und einem timeout immer wieder prüfen, ob das element in der seite schon existiert und erst danach die links zählen.

    freundl. Grüsse aus Berlin, Raik

    1. Halo Raik.
      Wie setze ich denn diesen Timeout?
      Wenn ich setTimeout(...) benutze, geht mir der Zugriff auf das geöffnete Fenster verloren, weil die andere Funtion es nicht erkennt.

      function kvchk(nummer){
      var fenster=window.open( 'seite'+nummer, 'fenster', 'width=100,height=100,toolbar=0,location=0,directories=0,status=0,menuBar=0,scrollBars=0,resizable=0' );
      self.focus();
      self.setTimeout("kv()",2000);
      }

      function kv() {
      if (fenster.document.links.length > 5) {
      fenster.close();
      alert(fenster.document.links.length);
      }
      else
        fenster.close();
      }

      1. Hallo, Florian Bluhm!

        ... geht mir der Zugriff auf das geöffnete Fenster verloren, weil die andere Funtion es nicht erkennt.

        ja. und wie macht man es ihr bekannt? indem man die referenz (fenster) der funktion als parameter mit übergibt. ;-)
        oder "var fenster" global macht, indem man es ausserhalb der funktionen anlegt.

        freundl. Grüsse aus Berlin, Raik

        1. Also ich habs jetzt mit dem Aufruf
             self.setTimeout("kv(fenster)",2000);