MaStA*BlAsTa: document.layer.document.layer2.src + nn4x = argh!!!

hallo kollegen,

ich habe mal wieder ein problem mit nn4x.
ich habe eine seite erstellt, die einen haupt-layer ("layer")
und einen darin verschachtelten layer ("mainlayer") hat. daneben
noch einen normalen layer ("headlayer").

ich möchte über einen link in mainlayer, folgende funktion aufrufen:

document.headlayer.src = neuesrc;
document.layer.mainlayer.src = neuesrc2;

das erste geht, beim zweiten streikt er. warum? kann netscape die src
des layers über eine funktion net ändern, wenn die funktion aus demselben
layer aufgerufen wird? und wenn ja, wie kann ich es umgehen?

thx fo help!
MaStA*BlAsTa

  1. Nachtrag:

    document.headlayer.src = neuesrc;
    document.layer.mainlayer.src = neuesrc2;

    ich hab natürlich
    document.layer.document.mainlayer.src = neuesrc2;
    verwendet.

  2. Hallo

    document.headlayer.src = neuesrc;
    document.layer.mainlayer.src = neuesrc2;

    das erste geht, beim zweiten streikt er. warum? kann netscape die src
    des layers über eine funktion net ändern, wenn die funktion aus demselben
    layer aufgerufen wird? und wenn ja, wie kann ich es umgehen?

    Frage 1: Ist in main-layer eine externe Datei geladen?

    Frage 2: Wo kann man sich das anschauen?

    Viele Grüße

    Antje

    PS:
    Bei deinem Homepagelink kriege ich die Meldung:
    Ein XML-Dokument muss ein Element der obersten Ebene enthalten. (IE5)

    1. hi antje,

      ja, sorry, ich hab einiges vergessen zu schreiben:

      Frage 1: Ist in main-layer eine externe Datei geladen?

      ja, und in "head" auch, die sollen dann später durch mein kleines
      script andere inhalte annehmen. alles layout-bedingt.

      Frage 2: Wo kann man sich das anschauen?

      unter www.onwebworx.net/n3/?a=3 ... derweil wird nur mit nn4x
      eine seite angezeigt... es ist auch wirklich nur ein nn4x problem, weil
      mit ie und nn6 mach ich das ganze einfach per iframe...

      Bei deinem Homepagelink kriege ich die Meldung:
      Ein XML-Dokument muss ein Element der obersten Ebene enthalten. (IE5)

      ja, das ist ein fehler meinerseits, kommt aber nur im ie. also bitte nur
      im nn4x anschauen!

      greetz
      MaStA*BlAsTa

      1. Hallo

        Frage 1: Ist in main-layer eine externe Datei geladen?

        ja, und in "head" auch, die sollen dann später durch mein kleines
        script andere inhalte annehmen. alles layout-bedingt.

        Bei deinem Beispiel sah es so aus, als ob er die Datei zwar vom Server holte (ändern der Src-Eigenschaft) aber eben nicht anzeigte.

        Versuche es mal mit Load, da habe ich eigentlich gute Erfahrungen mit gemacht.

        http://selfhtml.teamone.de/javascript/objekte/layers.htm#load

        Außerdem reagiert NN manchmal sehr sehr seltsam auf JavaScript in der Layerdatei. Also alle Funktionen im Top-Dokument halten und immer mit parent bzw. top referenzieren.

        Viele Grüße

        Antje

        1. hi

          Bei deinem Beispiel sah es so aus, als ob er die Datei zwar vom Server holte (ändern der Src-Eigenschaft) aber eben nicht anzeigte.

          Versuche es mal mit Load, da habe ich eigentlich gute Erfahrungen mit gemacht.

          http://selfhtml.teamone.de/javascript/objekte/layers.htm#load

          Außerdem reagiert NN manchmal sehr sehr seltsam auf JavaScript in der Layerdatei. Also alle Funktionen im Top-Dokument halten und immer mit parent bzw. top referenzieren.

          ich habe es nun mit load probiert und wieder online gestellt. es geht immer noch nicht. kann es sein, dass die refernzierung auf den mainlayer net stimmt?

          MaStA*BlAsTa

          1. Hallo

            ich habe es nun mit load probiert und wieder online gestellt. es geht immer noch nicht. kann es sein, dass die refernzierung auf den mainlayer net stimmt?

            Ursache gefunden. Der doppelte Layerwechsel war es. Erst muß ein Layer fertig geladen sein, bevor der nächste geladen werden darf. Sonst geht der Aufruf ins Leere.

            Ich habe deine Funktions so abgeändert:

            function change(page,was){

            if (was==1) {document.head.load(urlh,366);
                         urlh=void(0);
                         return;
                       }
            urlh = "?a=5&p=" + page;
            urlm = "?a=4&p=" + page;

            document.elCont.document.elMain.load(urlm,366);

            }

            und im Layer

            <layer name="elMain" src="?a=4&p=home" onload="if (window.urlh) change('',1);initScroll()" top="0"

            left="0" width="382" clip="366,245"></layer>

            Zuerst wird der Hauptlayer geändert. Mit dem Aufruf der Funktion wird die Variable urlh angelegt. Greift bei dem Hauptlayer dann der onload-Event, prüft er zuerst ob die Variabele window.urlh existiert.
            Tritt der Fall ein, dann ruft er die Funktion change() erneut - diesmal mit Parameter auf. Die ändert den Kopflayer, setzt die Variable urlh auf undefined und bricht anschließend die Funktion ab.

            Natürlich geht es auch umgekehrt :-), dann muß eben die Reihenfolge geändert werden.

            Viele Grüße

            Antje

            1. hi antje

              dank dir! jetz funzt es endlich!

              greetz
              MaStA*BlAsTa