ERLEDIGT
JA
JA
ANTWORTEN
16
16
ZUGRIFFE
751
751
EMPFEHLEN
-
13.09.06 11:08 #1
- Registriert seit
- Jul 2006
- Beiträge
- 71
Hallo.
Ich habe in meiner Parent Seite eine Javascript Funktion in der ich ganz normal ein Popupfenster öffne:
und möchte das Fenster nach bestimmten Bearbeitungen der Parent Seite von der Parent Seite aus wieder schließen.Code :1 2
options="resizable=1,scrollbars=1,toolbar=0,menubar=0,location=0,directory=0, width=130,height=130"; fensterx= window.open("popup.php", "popup_fenster",options);
(im javascript natürlich)Code :1
fensterx.close();
==> hatte nicht funktioniert
Jetzt der wichtige Teil:
Wenn ich direkt in der window.open funktion
mache schließt das Fenster nach 700ms wieder.Code :1
setTimeout('fensterx.close();',700);
Wenn ich einen Wert über 700 verwende schließt das fenster nicht mehr.
Verliert der Browser (IE und FF) da durch eine Einstellung den Namen des fenstersGeändert von steyrblade (13.09.06 um 11:14 Uhr)
-
13.09.06 13:28 #2
- Registriert seit
- Oct 2004
- Ort
- München / Innsbruck
- Beiträge
- 2.263
Eigentlich sollte alles funktionieren, kannst du mal bitte einen Link auf die Seite oder den gesamten Code posten.
Wäre der Satz "Ich möchte auf meinem Fisch-und-Chips-Schild einen Bindestrich zwischen die Wörter Fisch und und und und und Chips machen" nicht deutlicher, wenn Anführungszeichen vor Fisch und zwischen Fisch und und und und und und und und und und und und und und und und und und und und und Chips und auch nach Chips wären?
| Meine Homepage: Forschung, unethische | Meine Seite mit viel verlangten Javascrits |
-----------
Zufriedenstellende Beiträge bitte als erledigt markieren!
-
13.09.06 14:49 #3
- Registriert seit
- Jul 2006
- Beiträge
- 71
Das ist ein Intranet Tool und hat ca.Tausend Zeilen.
Ich werde es jetzt mal mit einem neuen File versuchen in dem nur dieser Code steht. Vielleicht liegt es ja an anderen Javascript Codesnipseln.
Ich habe das Problem aber schon in einem anderen Foren gefunden.
Leider gab es dort auch keine weitere Hilfe
Vielleicht fällt ja noch jemand was ein.
-
13.09.06 15:32 #4
- Registriert seit
- Jul 2006
- Beiträge
- 71
Also geht auch nicht wenn ich nur den Problem Code in ein neues File einfüge
in der index.php steht
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<html> <script language=javascript> <!-- function open_load_pop_up() { options="resizable=1,scrollbars=1,toolbar=0,menubar=0,location=0,directory=0, width=140,height=140"; var test_fenster = window.open("ladepopup.php",'',options); alert(test_fenster); } //--> </script> <a href='' onClick="javascript:open_load_pop_up();">link</a> <html>
und in dem Popup File:
Code :1 2 3 4 5 6 7
<html> <script language=javascript> <!-- alert(test_fenster); //--> </script> </html>
Wenn man auf den Link in der Index klickt öffnet das neue Fenster.
Was hier gleich auffällt ist, das der alert im neuen Fenster (Popup) nicht geht.
Nur der von der Index funktioniert.
Weiss das eigene Fenster nicht wie es heisst.
wenn ich in dem Fenster vor dem alert
test_fenster = this.window;
einfüge weiss es natürlich wieder wie es heisst
aber wenn ich dann am ende des Index files dann nochmal
reinmache funktioniert es schon wieder nicht mehr.Code :1 2 3 4 5
<script language=javascript> <!-- alert(test_fenster); //--> </script>
Der verliert dauernd die Bezeichnung des Popup FenstersGeändert von steyrblade (13.09.06 um 15:34 Uhr)
-
14.09.06 08:27 #5Maik Tutorials.de Gastzugang
Bitte lies mal die Netiquette Nr.12 und unterlasse zukünftig das Pushen Deines Threads.
Deinen Threadpusher habe ich hier wieder entfernt.
-
14.09.06 10:53 #6
- Registriert seit
- Oct 2004
- Ort
- München / Innsbruck
- Beiträge
- 2.263
<script language=javascript> muss eigentlich <script langugage="javascript"> heißen, aber auch das ist ja nicht besonders gut, weil das language-Attribut inzwischen depreciatet ist. Ideal wäre <script type="text/javascript">
Außerdem, gehört in einen onClick kein "javascript:" rein. Ein onClick ist per definition Javascript und der "javascript:"-Zusatz ist für href-Attribute gedacht und selbst da ist er eigentlich in Relikt aus grauer Vorzeit, dass nur Probleme macht.
Ganz nebenbei schreiben sich neuerdings alle attribute, also auch Javascript-Events wie onclick durchgehend klein (also "onclick" statt "onClick").
Und du solltest eine Sorte von Anführungszeichen in Attributen verwenden: Entweder einfach ('blubb') oder doppelt ("blubb"), aber nicht gemischt.
So nun, da das technische geklärt ist zum eigentlichen Fehler: Deine Variable "test_fenster" existiert nur innerhalb der Funktion. Damit sie überhaupt außerhalb existiert, musst du sie auch außerhalb initialisieren. Also soNun kannst du aber nicht so einfach von einem PopUp aus auf Variablen im Öffner-Fenster zugreifen. Für ein PopUp wird quasi ein ganz eigener Satz Variablen geschaffen. Bei einem PopUp handelt es sich ja um ein neues Fenster. Woher soll Javascript wissen, dass du damit nicht eine externe Seite aufrufst oder so? Denn wenn du eine externe Seite aufriefst, könnte dort je eine Variable vorkommen, die gleich heißt, wie eine Variable auf deiner Öffnerseite und dann würde es zu Konflikten kommen.HTML-Code:<html> <script type="text/javascript"> <!-- var test_fenster; function open_load_pop_up() { options="resizable=1,scrollbars=1,toolbar=0,menubar=0,location=0,directory=0, width=140,height=140"; test_fenster = window.open("ladepopup.php",'',options); alert(test_fenster); } //--> </script> <a href="" onclick="open_load_pop_up();">link</a> <html>
Du musst also über das opener-Obhekt auf die Variable zugreifenSollte funktionieren, wenn du die anderen Sachen auch ausbesserst. Aber ich verstehe nicht, wieso du überhaupt so auf das Fenster zugreifen willst, wenn du eh schon gemerkt hast, dass es mit this.window geht.HTML-Code:<html> <script type="text/javascript"> <!-- alert(opener.test_fenster); //--> </script> </html>
Geändert von con-f-use (14.09.06 um 11:09 Uhr)
Wäre der Satz "Ich möchte auf meinem Fisch-und-Chips-Schild einen Bindestrich zwischen die Wörter Fisch und und und und und Chips machen" nicht deutlicher, wenn Anführungszeichen vor Fisch und zwischen Fisch und und und und und und und und und und und und und und und und und und und und und Chips und auch nach Chips wären?
| Meine Homepage: Forschung, unethische | Meine Seite mit viel verlangten Javascrits |
-----------
Zufriedenstellende Beiträge bitte als erledigt markieren!
-
Hallo,
Woher auch? Jede im Browser angezeigte Seite besitzt einen eigenen JavaScript-Kontext. Die Variablen der aufrufenden Seite werden also nicht in die aufgerufene Seite übernommen. Daher ist natürlich auch test_fenster nicht gesetzt. Macht aber nicht, schließlich verweisen this, window und self ja auf dasselbe Objekt.
Zitat von steyrblade
Wegen des Problems, dass du außerhalb der Funktion open_load_pop_up() nicht auf test_fenster zugreifen kannst: bist du dir der Bedeutung des Schlüsselwortes var bewusst?
Grüße,
Matthias
<edit>Das stimmt so nicht. Globale Variablen können innerhalb von Funktionen auch ohne vorherige Deklaration gesetzt werden:
Zitat von con-f-use
</edit>Code javascript:1 2 3
function foo() { bar = 42; } foo(); alert(bar); // => 42
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
14.09.06 12:00 #8
- Registriert seit
- Jul 2006
- Beiträge
- 71
Stimmt... hatte ich vergessen, das die variable nur innerhalb der funktion bekannt ist
(Die fehlende Konventionseinhaltung ist ja erst mal nebensächlich würd ich sagen.)
Aber mit
Code :1
var test_fenster;
vor der Funktion ist es auch nicht getahn. Denn dadurch ist dann zwar die variable bekannt aber hat keinen Inhalt, da das setzen ja in der funktion ist.
Wie kann ich eine Variable nochmal als Global deklarieren.
Dadruch müsste es ja dann funktionieren.
Nochmal dazu was ich eigentlich machen will.
Das scheint noch nicht ganz klar zu sein.
Ich möchte ein Popup aus der parent Seite aus öffnen und wenn die Parent Seite fertig geladen ist das Popup wieder von der Parent Seite aus schließen. (Kann bis 1min dauern)
Wenn es eine normale Zeitsteuerung wäre würde ich das close mit nem timeout in das Popup machen. Da ich aber nicht weiss wie lange es dauert, soll es eben von der Hauptseite wieder geschlossen werden.
Ich habe gerade nochmal was getestet:
Wenn ich in der open funktion direkt wieder ein close mache funktioniert es.
Wenn ich aber das ganze mit setTimeout('test_fenster.close();',1000);
mache geht es nicht mehr.
Es wird auch keine variable vom if ins else in einer funktion übergeben.
Ich kenn mich in js nicht besonders aus.
In PHP würde das ohne weiteres gehen.
Wenn ich var weg lasse sollte es ja eine globale variable sein. Macht aber auch keinen UnterschiedGeändert von steyrblade (14.09.06 um 12:53 Uhr)
-
Hallo,
Dann hast du deine Variable wieder als lokal deklariert. Tu dir doch den Gefallen und informiere dich mal an entsprechender Stelle über Variablen in JavaScript (z.B. bei SelfHTML).
Zitat von steyrblade
Folgendes Minimalbeispiel funktioniert bei mir tadellos:
Code javascript:1 2 3 4
function open_popup() { popup = window.open('about:blank'); window.setTimeout('popup.close()', 2000); }
Wie meinst du das?Es wird auch keine variable vom if ins else in einer funktion übergeben.
Auch in PHP haben Variablen nur einen gewissen Gültigkeitsbereich. Auf globale Variablen hat man beispielsweise innerhalb von Funktionen nicht unmittelbar Zugriff. Andersherum kann man auch nicht von außerhalb auf Variablen zugreifen, die innerhalb einer Funktion deklariert wurden.Ich kenn mich in js nicht besonders aus.
In PHP würde das ohne weiteres gehen.
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
14.09.06 14:13 #10
- Registriert seit
- Jul 2006
- Beiträge
- 71
var davor local
ohne var global
soweit is ja klar
Das mit if zu else war quatsch hatte mich vertan.
ich hatte in einer funktion ein if und else
Ich hatte jetzt zum öffnen eben ein open mit übergeben und zum schließen ein closeCode :1 2 3 4 5 6 7 8 9
if($checkvar=="open") { options="resizable=1,scrollbars=1,toolbar=0,menubar=0,location=0,directory=0, width=140,height=140"; test_fenster = window.open("ladepopup.php",'',options); } else { window.test_fenster.close(); }
Die funktion behält aber wie ich jetzt gemerkt habe die variable test_fenster nicht bis zum erneuten Aufruf. => sprich bei else kannte er test_fenster nicht mehr
Könntet mir vielleicht einfach nen entsprechenden Code schreiben.
=>eine Funktion in der ich je nach inhalt der übergebenen variable das fenster öffne bzw. schließe.
Danke
-
Hallo,
Code javascript:1 2 3 4 5 6 7 8
function popup(action) { if (action == "open") { options = "resizable=1,scrollbars=1,toolbar=0,menubar=0,location=0,directory=0,width=140,height=140"; popup_window = window.open("about:blank", "", options); } else { popup_window.close(); } }
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
14.09.06 16:12 #12
- Registriert seit
- Jul 2006
- Beiträge
- 71
lol
das ist genau das was ich drüber hin beschrieben habe und das geht wie gesagt nicht, da die funktion die variable (in dem Fall popup_window) beim erneuten Aufruf wieder vergisst.
Die Funktion wird ja 2 mal angesprochen:
Einmal zum öffnen des fensters (open wird in der variable mit übergeben)
Einmal zum schließen des fensters (close wird in der variable mit übergeben)
Beim schließen wird ja Else ausgeführt und dort kennt er das Fenster nicht mehr
-
Hallo,
Du wolltest eine Funktion, die abhängig vom Parameter ein Popupfenster öffnet oder schließt. Die hast du auch bekommen. Wenn sie nicht funktioniert, machst du vermutlich bei der Verwendung einen Fehler.
Zitat von steyrblade
Vielleicht hilft dir ja ein komplettes Beispiel weiter:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
<?xml version="1.0" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="de"> <head> <title>Popup</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="author" content="Matthias Reitinger" /> <script type="text/javascript"> // <![CDATA[ function popup(action) { if (action == "open") { options = "resizable=1,scrollbars=1,toolbar=0,menubar=0,location=0,directory=0,width=140,height=140"; popup_window = window.open("about:blank", "", options); } else { popup_window.close(); } } // ]]> </script> </head> <body> <p> <button onclick="popup('open')">open</button> <button onclick="popup('close')">close</button> </p> </body> </html>
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
14.09.06 18:05 #14
- Registriert seit
- Jul 2006
- Beiträge
- 71
hmm habs grad bei mir privat auf meinen apache gehauen.....
tatsächlich funktioniert
Aber is schon komisch ich mach doch genau das gleiche.
Vielleicht liegts ja auch am Browser oder Server in meiner Firma.
Hab das jetzt mal genau so umgeschrieben wie ichs brauch und geht
Danke
-
15.09.06 09:57 #15
- Registriert seit
- Jul 2006
- Beiträge
- 71
Klappt doch noch nicht ganz.
Geändert von steyrblade (15.09.06 um 10:54 Uhr)
Ähnliche Themen
-
MySQL 5 - Tabelle verliert Datensätze nach komplexen Statement ?
Von TuxCommander im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 22.09.08, 21:18 -
popup window aus movieclip
Von KukiW im Forum Flash PlattformAntworten: 4Letzter Beitrag: 21.08.02, 18:08 -
Browser Window
Von noise im Forum HTML-EditorenAntworten: 4Letzter Beitrag: 15.03.02, 20:59 -
close window + popup
Von amOkk im Forum Javascript & AjaxAntworten: 11Letzter Beitrag: 18.09.01, 17:31 -
Browser Window und Javascript
Von Kuki Walsch im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 12.06.01, 19:33





Zitieren
Login





