Ich bin zu doof: Variable über Frame

Ist natuerlich unguenstig, dass das in JavaScript nicht so einfach ist.
Und Dein Script sieht ja schon ein wenig laenger aus.

@AGUNDA:
Spricht was gegen PHP? Damit liesse sich das platzsparender Loesen.
Ausserdem funktioniert der ganze JavaScript-Kram ja bekanntermassen nicht wenn es im Browser deaktiviert wurde. Und da PHP serverseitig ablaeuft kann der User sich nicht dagegen wehren dass es funktioniert. :)
 
Mann seid ihr aktiv Danke!

Also hier noch mal das Problem:

Im Frame 3 möchte ich 2 Variablen definieren, die Urls enthalten, die im Frameset zum nachladen gelesen werden.

Dank eurer Hinweise ist mir nun klar, dass ich beide Variablen per Url übergeben muss und dann "zerlege". Nun habe ich folgendes versucht: (Bitte nicht lachen,ich gebe mir echt Mühe):

Frame3
Code:
<script type="text/javascript">
<!--
  if(top.frames.length < 1){location.href="../../index.html?name="+window.location&frame2=geht.html;}
//-->
</script>


Und im Frameset:
Code:
   <script type="text/javascript">
<!--
 if (window.location.search != "") {
  var a = window.location.search.split("&");
  var b = window.location.search.split("=");
  var Adresse = a[1];
  var Adresse2 = b[1];
 }
 else {var Adresse = "scriptinfo.html"; var Adresse2 = "geht.html"}

  var frameset='<frameset cols="140,95%,154" border="0">';
  frameset+='  <frame src="scriptnavi.html" name="menuframe">';
  frameset+='  <frame src="'+Adresse2+'" name="introframe">';
  frameset+='  <frame name="info" src="'+Adresse+'">';
  frameset+='</frameset>';
  document.write(frameset);
//-->
</script>

Klappt natürlich nicht...
Wahrscheinlich muss ich den Rest aus a zerlegen? Aber wie?
 
Schonmal wirklich gut, dass Du was mit unserem Gesuelze anfangen konntest und Fortschritte gemacht hast. Da ich wie gesagt nicht so der JavaScript-Guru bin kann ich Dir bei der Frage die Du jetzt hast nur bedingt weiterhelfen.
Aber ein wenig rumtesten hat beim Splitten merkwuerdige, und meiner Meinung nach unbrauchbare Ergebnisse gebracht.
Lass Dir mal die Adress-Variablen ausgeben, um zu checken ob das Splitten wirklich so gelaufen ist wie Du's Dir vorstellst.
Eine andere Moeglichkeit zu splitten waere einen Teil des Strings zu kopieren. Ich denk mal auch JavaScript bietet eine Moeglichkeit an einen SubString zu kommen. Da Du weisst wie die Variablen heissen kannst Du z.B. von der Stelle wo name= aufhoert bis zur Stelle vor frame2= den SubString in Adresse kopieren und allen was nach frame2= kommt in Adresse2 kopieren.

Und nochmal meine Frage: Spricht etwas gegen den Einsatz von PHP?
Damit waere die Auswertung wesentlich einfacher, das Ergebnis das gleiche und nicht durch Benutzereinstellungen zu verhindern. Wenn ein Besucher Deiner Website JavaScript deaktiviert hat, wird Dein Frameset nie geladen werden.
 
Hallo reptiler,

natürlich hast du Recht, mit php wäre es die sauberste Lösung.
Aber ich bin ja schon gluecklich, wenn es mit JS klappt.

Das Ganze ist ein Onlineshop aus alten Tagen, der mit JS arbeitet, somit können sowiese nur JS Kunden einkaufen...

Danke für deine Hinweise, werde es mal weiter versuchen und die Ergebnisse posten
(ist glaube ich auch für die Nachwelt interessant)
 
Et luift - DANKE!

Vielen Dank Ihr Lieben! Das war kein Hinweis zu viel oder zu wenig.

Ein paar Dinge habe ich nun gelernt:

1) Urlübergreifend können nicht beliebig viele Variablen, sondern nur eine übertragen werden.

2) SPLIT splittet die Variable nicht einmal, sondern immer wenn die Bedingung erfüllt ist. D.h. man kann Frameübergreifend einen Variablensammelstring machen, der nach der Übertragung via a[0] bis a[x] ausgelesen werden kann.

Daraus ergibt sich folgende Lösung:

3. Frame:
Code:
<script type="text/javascript">
<!--
  if(top.frames.length < 1){location.href="../../index.html?name="+window.location+"=geht.html";}
  //-->
</script>

Und im Frameset:

Code:
<script type="text/javascript">
<!--
 if (window.location.search != "") {
  var a = window.location.search.split("=");
  var Adresse = a[1];
  var Adresse2 = a[2];
 }
 else {var Adresse = "scriptinfo.html"; var Adresse2 = "geht.html"}

  var frameset='<frameset cols="140,95%,154" border="0">';
  frameset+='  <frame src="scriptnavi.html" name="menuframe">';
  frameset+='  <frame src="'+Adresse2+'" name="introframe">';
  frameset+='  <frame name="info" src="'+Adresse+'">';
  frameset+='</frameset>';
  document.write(frameset);
//-->
</script>


Vielen vielen Dank für die netten Tipps und Hinweise, nun habe ich Kopfweh, aber bin glücklich! :p
 

Neue Beiträge

Zurück