T!M: Auf eine Function eines anderen Frames zugreifen

hallo,

um zu testen ob es geht, hab ich dieses Frameset geschrieben:
es soll testen, ob es auf den anderen Frame zugreifen kann, und nen cookie setzen in dem steht permission=true / false...
aber tut sich nix, hab den Javascript debugger installiert und bekomme noch nicht einmal nen Fehler!
was mach ich falsch?

frameset:
----------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
</head>
<frameset rows="100,*">
  <frame src="http://localhost/test_permission_f1.html" name="testFrame">
  <frame src="http://localhost/test_permission_f2.html" name="visibleFrame">
</frameset>
</html>
----------------------------------------------------------

frame1:
----------------------------------------------------------
<html>
<head>
<script type="text/javascript">
<!--
 function Permission(){
  alert("sdg");
  return true;
 }
//-->
</script>
</head>
<body>

</body>
</html>
----------------------------------------------------------

frame2:
----------------------------------------------------------
<html>
<head>
<script type="text/javascript">
<!--
 permission = parent.testFrame.Permission();
 //permission = false;
 if(permission){
  document.cookie = "Permission = true";
 }else{
  document.cookie = "Permission = false";
 }
 if(document.cookie)
   alert(document.cookie);

//-->
</script>
</head>
<body>

</body>
</html>
----------------------------------------------------------

  1. Hallihallo!

    An sich sieht der Quelltext eigentlich relativ richtig aus (ich meine, von der Syntax her). Das müsste eigentlich der Grund sein, weshalb es auch keine Fehlermeldungen gibt.

    Aber ich habe ein kleines "logisches Problem" gefunden.

    Und zwar gibst Du keine Meldung aus, wenn der Browser keine Cookies annehmen will. Ich selbst habe eben mal das Skript mit IE5.5 (Cokkies akzeptiert), NN4.7 (Cookies akzeptiert) und mozilla1.0 (keine Cookies) getestet.
    In den ersten beiden Browsern bekam ich ganz brav eine Meldung "sdg", dann "permission=true". -> Hat also funktioniert...

    Mit Mozilla kam "sdg", und danach nichts mehr. Das liegt daran, daß mein Mozilla keine Cookies akzeptiert, dadurch die Bedingung if(document.cookie) nicht erfüllt ist, und der Browser nichts zum Melden hat.

    Deshalb gibt es (ganz spontan) 2 Ansätze:

    1. Du verzichtest auf Cookies, wenn Du das Skript auf einer öffentlich zugänglichen Stelle einsetzen möchtest. Stattdessen kann man im unteren Frame genausogut eine globale Variable setzen.

    2. Wenn es Cookies sein müssen (aus welchem Grund auch immer), gib im unteren Frame eine Meldung aus:
             if (document.cookie) {....}
             else {alert ("Kann keinen Cookie setzen!"); }

    Hier habe ich den Quelltext mal ein bisschen verändert, und damit funktioniert es: (der untere Frame)

    <html>
    <head>
    <script type="text/javascript">
    <!--
     grummel = parent.testFrame.Permission();
     //permission = false;
     if(grummel == true){
      document.cookie = "Permission = true";
     }else{
      document.cookie = "Permission = false";
     }
     if(document.cookie) {
       alert(document.cookie);
     }
     else {
     alert ("Kann keinen Cookie setzen!");
    }
    //-->
    </script>
    </head>
    <body>

    (Bitte zu beachten: Ich habe die Variable von "permission" in "grummel" umbenannt, damit sie sich nicht mit der Funktion "Permission" beissen kann, das ist mir nämlich schon häufig passiert)

    Wenn Du damit die Meldung "Kann keinen Cookie setzen" bekommst, solltest Du die Einstellungen im Browser überprüfen. (Im Mozilla gibt es zum Beispiel zwei Einstellungspunkte zum Thema Cookies).

    Ich hoffe, ich konnte Dir weiterhelfen....

    Viele liebe Grüße,
    Der Dicki