FENSTER-Problem
Frustriert...
- javascript
Hallo!
Ich habe wie viele hier ein Problem und hoffe in diesem Forum die Erleuchtung zu bekommen...
Also nun zu meinem Problem:
Ich erzeuge mit "window.open" ein neues Fenster und übergebe diesem einen beliebigen Namen. Anschließend möchte ich in diesem neu geöffnetem Fenster den eigenen Fensternamen auslesen oder in einer Variable abspeichern???
Geht das? Überhaupt möglich? Wenn ja, wie?
Danke an alle, die mir die Erleuchtung geben!!!
Gruß
Frustrierter
Hallo Frustrierter,
Anschließend möchte ich in diesem neu geöffnetem Fenster den eigenen Fensternamen auslesen oder in einer Variable abspeichern???
vielleicht suchst du http://selfhtml.teamone.de/javascript/objekte/window.htm#name?
Grüße aus Nürnberg
Tobias
Hallo Frustrierter,
Anschließend möchte ich in diesem neu geöffnetem Fenster den eigenen Fensternamen auslesen oder in einer Variable abspeichern???
vielleicht suchst du http://selfhtml.teamone.de/javascript/objekte/window.htm#name?Grüße aus Nürnberg
Tobias
Hallo Tobias,
danke vorerst für die schnelle Hilfe.
Die Seite hatte ich schon gesehen, hatte gehofft dass es auch anders möglich ist.
Gruß
Frustrierter
Anschließend möchte ich in diesem neu geöffnetem Fenster den eigenen Fensternamen auslesen oder in einer Variable abspeichern???
vielleicht suchst du http://selfhtml.teamone.de/javascript/objekte/window.htm#name?
Die Seite hatte ich schon gesehen, hatte gehofft dass es auch anders möglich ist.
Äh? was stört dich daran?
Struppi.
Äh? was stört dich daran?
Struppi.
Hallo Struppi,
das Problem ist, dass ich das Fenster erzeuge und nachdem ich es erzeugt habe, es mit einer ANDEREN Funktion auslesen möchte.
D.h.
function eins(){
Fenster = window.open("test1.html","");
}
function zwei(){
Fenster.name = "guterName";
}
Aber er spuckt mir hier einen Fehler aus, weil er auf "Fenster" nicht von einer anderen Funktion zugreifen kann.
Gruß
Frustrierter
Äh? was stört dich daran?
Struppi.
Hallo Struppi,
das Problem ist, dass ich das Fenster erzeuge und nachdem ich es erzeugt habe, es mit einer ANDEREN Funktion auslesen möchte.
Du hast dein Problem völlig falsch beschrieben.
D.h.
function eins(){
Fenster = window.open("test1.html","");
Hier erzeugst du ein Fenster ohne Namen, der zweite Parameter ist der Name.
}
function zwei(){
Fenster.name = "guterName";
}
Aber er spuckt mir hier einen Fehler aus, weil er auf "Fenster" nicht von einer anderen Funktion zugreifen kann.
Natürlich kann er, da du Fenster in der 1. Funktion global deklariert hast (was man aber möglichst vermeiden soll) und solange die 2. funktion im gleichen Scope liegt kann sie auf Fenster zugreifen.
Es geht aber nicht, wenn test1.html auf einem anderen Server liegt
Ohne,
a.) eine genaue Fehlermeldung
b.) eine Beschreibung, wo und wie du JS einsetzt
ist das mal wieder nur ein Ratestunde.
Struppi.
Hallo Struppi!
a.) eine genaue Fehlermeldung
Also die Fehlermeldung von IE ist "Fenster ist undefiniert".
b.) eine Beschreibung, wo und wie du JS einsetzt
Javascript setzte ich als externe *.js datei ein. Er öffnet das Fenster, jedoch kann ich z.B. mit einer If-Abfrage den Fensternamen nicht abrufen bzw. abfragen oder diesen an eine Variable übergeben.
Die Frage ist, wie greife ich auf den Fensternamen aus einer anderen function zu?
so:
function zwei(){
eins.Fenster.name = "neu";
}
Also auch in der Referenz von Self-Htlm bin ich nicht fündig geworden.
PS: ich könnte auch weiterkommen, wenn ich eine statische Variable erzeugen könnte o.ä. in der ich etwas abspeichern könnte, dann würde ich das alles umfunktionieren. Wenn ich z.B. von einer Funktion aus eine Variable ausserhalb der Funktion ändern könnte wie z.B. in Java!
Gruß
Frustrierter
Hallo Struppi!
a.) eine genaue Fehlermeldung
Also die Fehlermeldung von IE ist "Fenster ist undefiniert".
Tja, dann ist fenster undefiniert. Du definierst die Variabel nicht im gleichen Scope.
b.) eine Beschreibung, wo und wie du JS einsetzt
Javascript setzte ich als externe *.js datei ein. Er öffnet das Fenster, jedoch kann ich z.B. mit einer If-Abfrage den Fensternamen nicht abrufen bzw. abfragen oder diesen an eine Variable übergeben.
Wo immer du den Namen auch abfragst (du magst es uns ja nicht sagen) es ist die falsche Stelle, bzw. deine Fensterreferenz ist anders als du denkst.
Die Frage ist, wie greife ich auf den Fensternamen aus einer anderen function zu?
Wie du es beschreibst ist es richtig und funktioniert auch bei mir. Du machst irgendetwas anders, aber da wir ja hier in einer Raterunde sind, kann ich nur sagen, weiss ich nicht, nächster Tipp bitte.
Das ist alles immer noch zu Wschiwaschi
Bei mir funktioniert das:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script>
function openWin(url, name, param)
{
return window.open(url, name, param);
}
function setName(win, name)
{
win.name = name;
}
</script>
</head>
<body>
<a href="url.html"
onclick="var win=openWin(this.href);setName(win,'fenster');return false"
klick</A>
</body>
</html>
url.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<a href="url.html"
onclick="alert(window.name);return false"
klick</A>
</body>
</html>
Hallo Struppi!
Ich glaube du bist meine Erlösung!
Also hier der Wischiwaschi-Kram:
<a href="javascript:fenster(1)">
Mit dieser Befehlszeile greife ich aus der 1. HTML-Seite nennen wir diese Test.html auf die funktion der externe Javascript-Datei nennen wir diese extern.js ein.
// Methode um den Fensternamen zu ändern
function fenster(bild)
{
Fenster = window.open("galerie.html","");
if(bild == 1){
Fenster.name = "cool";
}
}
// Methode wird aus der Seite galerie.html aufgerufen
function setBild(){
zahleins = getAuswahl();
zahlzwei = getNaechstes();
getBild(zahleins, zahlzwei);
}
// Diese Funktion sollte mir eigentlich den Fensternamen zurückgeben???
function getAuswahl(){
test = Fenster.name;
return test;
}
// Methode zum zählen der Galerie
var zaehler = 0;
function getNaechstes(){
if(zaehler == 2){
zaehler = 0;
return zaehler;
}
else{
++zaehler;
return zaehler;
}
}
/** Arrays werden deklariert */
function getArray(num){
arr1 = new Image ();
arr1[0] = "Bild2.jpg";
arr1[1] = "Bild1.jpg";
arr1[2] = "Bild3.jpg";
return eval("arr"+num);
}
// Methode, die das aktuelle Bild zurück gibt
function getBild(eins, zwei) {
if(eins == "cool" ){
bilderarray = getArray(1);
}
document.aktuell.src = "" + bilderarray[zwei];
}
So nun denke ich ist es nicht mehr so undurchsichtig???
Jedenfalls gibt es 2 HTML-Seiten mit einem externen Javacode.
Das Problem war, dass ich die übergebene Variable von Test.html nicht irgendwo abspeichern konnte, deshalb dachte ich mir den Fensternamen zu ändern, um somit zumindest zu überprüfen welches Array gerade geladen ist.
ich kann es Dir auch als E-mail schicken???
Danke im Vorraus
Gruß
Frustrierter
Hallo Struppi!
Ich glaube du bist meine Erlösung!
Also hier der Wischiwaschi-Kram:
uiuiui, krudes Material was du da lieferst.
<a href="javascript:fenster(1)">
Mit dieser Befehlszeile greife ich aus der 1. HTML-Seite nennen wir diese Test.html auf die funktion der externe Javascript-Datei nennen wir diese extern.js ein.
Und diese extern.js hast du in Test.html eingebunden?
Aber nicht in galerie.html?
Gut.
// Methode um den Fensternamen zu ändern
function fenster(bild)
{
Fenster = window.open("galerie.html","");
if(bild == 1){
Fenster.name = "cool";
}
}
Warum willst du dem Fenster einen Name geben, bzw. wenn du es musst (was ich startk bezweifle, warum machst du es nicht beim öffnen? Wie gesagt der 2.Parameter von open() ist der Fenstername.
So nun denke ich ist es nicht mehr so undurchsichtig???
Ich weiss nicht, was du machst, aber das was es scheint zu tun, ist mit ein paar Zeilen Code erledigt.
in galerie.html:
<head>
<script type="text/javascript">
var bilder = new Array( "Bild2.jpg", "Bild1.jpg", "Bild3.jpg");
var count = 0;
function next()
{
if(count > bilder.length) count = 0;
document.aktuell.src = bilder[count];
count++;
}
</script>
</head>
<body>
<img src="" name="aktuell" onclick="next();">
</body>
Das funktioniert aber nicht in allen Browsern.
Struppi.
Hi Struppi!
Ehrlich gesagt ist dieses ganze Mischmasch deshalb, weil ich einen Integerwert, den ich von einer Html-Seite der Funktion, die sich in der externen js-Datei befindet nicht global abspeichern kann. Das heißt, ich muss eine Variable haben, in der ich einen Integerwert abspeichern kann, so dass ich mit der 2. HTML-Seite diese abgespeicherte Datei abrufen kann???
In Java,falls es Dir hilft, würde ich dies einfach static nennen und die Variable würde bis zum ende der Klasse verbleiben. Aber in JS kenne ich so eine Möglichkeit nicht. Es muss doch möglich sein, eine Variable abzuspeichern und diese dann mit einer anderen Html seite abrufen zu können.
Also die 1. html speichert in der js-Datei eine Variable ab, und die 2. html greift mit einer Funktion in der selben js-Datei auf diese schon abgespeicherte Variabe zu und ruft sie ab????
Das IST MEIN PROBLEM!!!!
Ich tippe hier meine Finger wund und das dumme Ding funktioniert nicht.
WAS mach ich falsch???
Hallo,
Ehrlich gesagt ist dieses ganze Mischmasch deshalb, weil ich einen Integerwert, den ich von einer Html-Seite der Funktion, die sich in der externen js-Datei befindet nicht global abspeichern kann. Das heißt, ich muss eine Variable haben, in der ich einen Integerwert abspeichern kann, so dass ich mit der 2. HTML-Seite diese abgespeicherte Datei abrufen kann???
Lies bitte, was dir Struppi und Tobias in aller Deutlichkeit mehrfach erläutert haben.
Es muss doch möglich sein, eine Variable abzuspeichern und diese dann mit einer anderen Html seite abrufen zu können.
Siehe Tobias' und Struppis Postings, denen nichts hinzuzufügen ist.
Also die 1. html speichert in der js-Datei eine Variable ab, und die 2. html greift mit einer Funktion in der selben js-Datei auf diese schon abgespeicherte Variabe zu und ruft sie ab????
Das wurde schon in der ersten Antwort auf dein Ursprungsposting beantwortet.
Das IST MEIN PROBLEM!!!!
Nein, dein Problem ist, dass du dir die Antworten nicht durchliest und die Vorschläge nicht in die Tat umsetzt.
WAS mach ich falsch???
Ich muss gestehen, dass ich, wie auch Struppi bereits gesagt hat, nicht ein einzigen Kernpunkt deiner Frage beziehungsweise Folgefragen verstande habe, insofern sieht es sehr danach aus, das du an den Helfenden vorbeiredest und Fragen unverständlich formulierst.
Struppi hat sich die Mühe gemacht, dir mehrere Lösungen vorzukauen (er hat konkrete, vollständige Beispiele gegeben), damit solltest du klarkommen, stattdessen lädst du deinen Code ab und setzt dich nicht mit Struppis Beispielen auseinander...
Grüße,
Mathias
Hallo Matthias,
ich bin Struppi auch auserordentlich dankbar. Selbstverständlich ist es natürlich nicht, sich hier mit Problemen von Anderen auseinander zu setzten.
Es ist auch nicht so, dass ich nur dumm rumfrage. Ich schau mir die Antworten und umsetztungen von Struppi an und versuche sie soweit wie Möglich an meinen eigenen Kram anzupassen und zu ergänzen. Jedoch ist irgendwo immer eine Fehlermeldung, die ich einfach nicht ausgemerzt bekomme.
Das ich den Code einfach nur Hochlade ist irgendwo ein Unterstellung, da ich es nur getan habe um die Problematik direkt darzustellen und nicht mir die Arbeit zu erleichtern, schließlich habe ich nichts davon, wenn jemand anderes mir die Seite macht.
Das einzige was ich gewollt habe war ein Gedankenstoss. Den ich natürlich auch bekommen habe.
Aber einen Eindruck von "NICHTS Versuchen, Vorkauen lassen" wollte ich NICHT vermitteln und habe ich auch nicht mit Absicht getan, wenn dies so rüber gekommen ist.
Gruß
Mustino
Aber einen Eindruck von "NICHTS Versuchen, Vorkauen lassen" wollte ich NICHT vermitteln und habe ich auch nicht mit Absicht getan, wenn dies so rüber gekommen ist.
Hugh ;-)
Aber helfen könne wir dir offensichtlich trotzdem nicht.
Vielleicht zeigste uns mal die seite die du gerade machst und ich versuch's noch mal morgen
Struppi.
Hallo Struppi,
vorerst Danke für deine Mühen und Hilfeleistungen.
Also sowohl das ändern der Fensterseiten als auch die Bildergalerie funktioniert, jedoch nicht wie ich es meinte. Dies ist aber keineswegs eine Kritik. Ich denke, dass meine Problematik von mir noch nicht richtig dargelegt wurde. Ich werde die Seiten die nächsten Tage hochladen, wäre nett wenn du sie dir mal angucken würdest. Die URL werde ich noch posten.
Gruß
Mustino