Holger: Mac: Location eines Frames umsetzen

Hi!

Folgendes Problem:
Ich möchte in einem Popup mit zwei Frames die Quelle eines der Frames ändern. Beim IE 6 auf PC klappt dies auch wunderbar,
der IE 5.1 auf Mac öffnet zwar das Popup, verändert aber nicht das Frame. Kann es sein dass dieser eine solche Aktion nicht erlaubt? Oder woran könnte es sonst liegen? Fehlermeldungen krieg ich jedenfalls keine.
Hier das Beispiel:

var myPopUp;
function openFrameset(){
  myPopUp = window.open("Frames.html","popup","");
  testFrames = window.setInterval("changeLocation()",100);
}
function changeLocation(){
  if(myPopUp.frames.length==2){
    myPopUp.frames[1].location.replace("neueSeite.html");
    window.clearInterval(testFrames);
  }
}

<a href="javascript:openFrameset();">und los!</a>

Vielen Dank für eure Hilfe,
Holger

  1. Hi,

    der IE 5.1 auf Mac öffnet zwar das Popup, verändert aber nicht das Frame.

    hast Du getestet, ob die Funktion überhaupt aufgerufen und der if-Zweig durchlaufen wird?

    testFrames = window.setInterval("changeLocation()",100);

    Warum benutzt Du eine Methode, die nicht mal zum JavaScript-1.0-Core gehört und die ein anschließendes

    window.clearInterval(testFrames);

    erfordert, anstatt mit der Methode zu arbeiten, die dafür gedacht ist? Nein, ich sag Dir nicht, welche das ist - sonder nur, dass Du sie an der gleichen Stelle findest ;-)

    <a href="javascript:openFrameset();">und los!</a>

    An Nicht-JavaScript-User hast Du gedacht?

    Cheatah

    1. Aber ab JS 1.2 ist setInterval() dabei. Und hat den Vorteil, finde ich, dass es von sich aus immer wieder gestartet wird, im Gegensatz zu setTimeout(), dass nur einmal läuft (falls Du das meinst). Allerdings scheint der Mac-IE das Interval nicht beenden zu können, sprich bleibt drin hängen.
      Werd´s mal mit setTimeout() versuchen.

      P.S. non-Javascript-User haben bei dem Projekt eh keine Chance.

      Gruß Holger

      1. Hab's mit setInterval() probiert.
        Klappt auch wunderbar, die Location lässt sich aber trotzdem nicht umsetzen.
        Weiß jemand rat?

      2. Hi,

        dieses Forum macht es leicht, sinnvoll zu zitieren. Es wäre hilfreich, wenn Du das nutzen würdest, damit Zusammenhänge nicht verlorengehen.

        Aber ab JS 1.2 ist setInterval() dabei.

        Ja - und in zwei vorherigen JavaScript-Versionen fehlt es.

        Und hat den Vorteil, finde ich, dass es von sich aus immer wieder gestartet wird,

        Willst Du das denn an dieser Stelle? Du willst einen Vorgang _einmalig_ nach einer bestimmten Zeit aufrufen. Das ist _nicht_ die Aufgabe von window.setInterval().

        im Gegensatz zu setTimeout(), dass nur einmal läuft (falls Du das meinst).

        Ja, natürlich.

        Werd´s mal mit setTimeout() versuchen.

        Und, geht's?

        P.S. non-Javascript-User haben bei dem Projekt eh keine Chance.

        Ist das sinnvoll? Du schließt bis zu ca. 20% der User aus.

        Cheatah