tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
16
ZUGRIFFE
751
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    steyrblade steyrblade ist offline Mitglied Silber
    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:
    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);
    und möchte das Fenster nach bestimmten Bearbeitungen der Parent Seite von der Parent Seite aus wieder schließen.

    Code :
    1
    
    fensterx.close();
    (im javascript natürlich)
    ==> hatte nicht funktioniert


    Jetzt der wichtige Teil:
    Wenn ich direkt in der window.open funktion
    Code :
    1
    
    setTimeout('fensterx.close();',700);
    mache schließt das Fenster nach 700ms wieder.
    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 fensters
    Geändert von steyrblade (13.09.06 um 11:14 Uhr)
     

  2. #2
    Avatar von con-f-use
    con-f-use con-f-use ist offline Mitglied Diamant
    tutorials.de Premium-User
    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!


  3. #3
    steyrblade steyrblade ist offline Mitglied Silber
    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.
     

  4. #4
    steyrblade steyrblade ist offline Mitglied Silber
    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

    Code :
    1
    2
    3
    4
    5
    
    <script language=javascript> 
    <!-- 
    alert(test_fenster);
    //--> 
    </script>
    reinmache funktioniert es schon wieder nicht mehr.
    Der verliert dauernd die Bezeichnung des Popup Fensters
    Geändert von steyrblade (13.09.06 um 15:34 Uhr)
     

  5. #5
    Maik 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.
     

  6. #6
    Avatar von con-f-use
    con-f-use con-f-use ist offline Mitglied Diamant
    tutorials.de Premium-User
    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 so
    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>
    Nun 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.
    Du musst also über das opener-Obhekt auf die Variable zugreifen
    HTML-Code:
    <html>
    <script type="text/javascript">
    <!--  
     alert(opener.test_fenster);  
    //--> 
    </script>
    </html>
    Sollte 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.
    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!


  7. #7
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo,

    Zitat Zitat von steyrblade
    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.
    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.

    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>
    Zitat Zitat von con-f-use
    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.
    Das stimmt so nicht. Globale Variablen können innerhalb von Funktionen auch ohne vorherige Deklaration gesetzt werden:
    Code javascript:
    1
    2
    3
    
    function foo() { bar = 42; }
    foo();
    alert(bar); // => 42
    </edit>
     
    „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

  8. #8
    steyrblade steyrblade ist offline Mitglied Silber
    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 Unterschied
    Geändert von steyrblade (14.09.06 um 12:53 Uhr)
     

  9. #9
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo,

    Zitat Zitat von steyrblade
    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.
    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).

    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);
    }

    Es wird auch keine variable vom if ins else in einer funktion übergeben.
    Wie meinst du das?

    Ich kenn mich in js nicht besonders aus.
    In PHP würde das ohne weiteres gehen.
    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.

    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

  10. #10
    steyrblade steyrblade ist offline Mitglied Silber
    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
    Code :
    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(); 
     }
    Ich hatte jetzt zum öffnen eben ein open mit übergeben und zum schließen ein 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
     

  11. #11
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    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

  12. #12
    steyrblade steyrblade ist offline Mitglied Silber
    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
     

  13. #13
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo,

    Zitat Zitat von steyrblade
    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.
    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.

    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. #14
    steyrblade steyrblade ist offline Mitglied Silber
    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. #15
    steyrblade steyrblade ist offline Mitglied Silber
    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

  1. MySQL 5 - Tabelle verliert Datensätze nach komplexen Statement ?
    Von TuxCommander im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 22.09.08, 21:18
  2. popup window aus movieclip
    Von KukiW im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 21.08.02, 18:08
  3. Browser Window
    Von noise im Forum HTML-Editoren
    Antworten: 4
    Letzter Beitrag: 15.03.02, 20:59
  4. close window + popup
    Von amOkk im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 18.09.01, 17:31
  5. Browser Window und Javascript
    Von Kuki Walsch im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.06.01, 19:33