1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

JavaS. Fenster schließt nicht automatisch.

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Neorun, 27.07.06.

  1. Neorun

    Neorun Uelzener Rambour

    Dabei seit:
    11.05.06
    Beiträge:
    374
    Hi,
    ich habe hier bei mir Aussenkameras ins Intranet eingepflegt welche alle 10 Sekunden ein Bild als thumbnail streamen welches im Intranet dargestellt wird.

    Nul lässt sich die Kamera per link anweisen vom Tag in den Nachtmodus zu wechseln.

    Das hab ich nun per JS verwirklicht. Einmal klick auf Tagmodus - Fenster öffnet sich und öffnet den Link - das gleiche für den Nachtmodus.
    Nun soll das Fenster das sich öffnet gleich wieder zugehen. Das klappt nicht.
    Ich dachte ich mach das mit:

    Code:
    function close_fenster1()
    {
        window.close();
    }
    
    Da passiert aber mal gar nix. Das kleine Fenster will nicht zugehen.

    Hier der komplette Code:

    Code:
    <! SCRIPT - zur Steuerung der CAM ( left oder right ) öffnet Link in neuem Fenster >
    <! Tagmodus BEGINN>
    
    <script language="JavaScript1.5" type="text/javascript">
    var fenetre;
    
    function tAg()
    {
    fenetre = window.open (
    "",
    "nighTFenster", // Name des neuen Fensters
    +"toolbar=0" // Toolbar 
    +",location=0" // Adress-Leiste
    +",directories=0" // Zusatzleisten
    +",status=0" // Statusleiste
    +",menubar=0" // Menü
    +",scrollbars=0" // Scrollbars
    +",resizable=0" // Fenstergrösse veränderbar?
    +",width=300" // Fensterbreite in Pixeln
    +",height=400" // Fensterhöhe in Pixeln
    );
    
    fenetre.moveTo(
    200, // X-Koordinate
    200 // Y-Koordinate
    ); // der linken oberen Ecke
    fenetre.location.href = "http://192.168.100.161/control/control?set&section=imagecontrol&camera=right";
    //Dateiname und Pfad der Datei, die angezeigt werden soll
    }
    
    </script>
    
    
    </head> <body> <a href="javascript:tAg();"><LI>Tagmodus</a> 
    <! Tagmodus ENDE>
    
    
    <! Nachtmodus BEGINN>
    
    <script language="JavaScript1.5" type="text/javascript">
    var fenster1;
    
    function niGht()
    {
    fenster1 = window.open (
    "",
    "nighTFenster", // Name des neuen Fensters
    +"toolbar=0" // Toolbar 
    +",location=0" // Adress-Leiste
    +",directories=0" // Zusatzleisten
    +",status=0" // Statusleiste
    +",menubar=0" // Menü
    +",scrollbars=0" // Scrollbars
    +",resizable=0" // Fenstergrösse veränderbar?
    +",width=300" // Fensterbreite in Pixeln
    +",height=400" // Fensterhöhe in Pixeln
    );
    
    fenster1.moveTo(
    200, // X-Koordinate
    200 // Y-Koordinate
    ); // der linken oberen Ecke
    
    fenster1.location.href = "http://192.168.100.161/control/control?set&section=imagecontrol&camera=left";
    //Dateiname und Pfad der Datei, die angezeigt werden soll
    
    }
    
    </script>
    
    </head> <body> <a href="javascript:niGht();"><LI>Nachtmodus</a> 
    
    
    <! Nachtmodus ENDE>
    
    Wo muss denn die Funktion zum schließen des jeweiligen Fensters hin?
    thx
     
  2. Thof

    Thof Gast

    wie wäre es mit

    Code:
    fenetre.close(); // schließt das Tag-Fenster; oder...
    fenster1.close(); // schließt das Nacht-Fenster
    
    Da beide Funktionen praktisch das gleiche machen, würde ich sie zu einer einzelnen Funktion zusammenfassen und den Rest (die Differenz) über Parameter übergeben (alternativ könnte man auch ein paar Variablen verwenden).

    Beispiel:
    Code:
    ...
    <script type="text/javascript">
    <!--
    var tagModus = true;
    
    var tagFenster = null;
    var nachtFenster = null;
    function modusWechseln()  {
      url = "";
      name = "";
      fenster = null;
      if(tagModus == true) {
        url = "..."; // URL für den Nacht-Modus, weil momentan (noch) der Tag-Modus aktiv ist...
        name = "NachtFenster";
        fenster = nachtFenster;
        tagFenster.close();
      } else {
        url = "..."; // URL für den Tag-Modus;
        name = "TagFenster";
        fenster = tagFenster;
        nachtFenster.close();
      }
      tagModus = !tagModus; // macht aus true -> false und umgekehrt...
      fenster = window.open (url, name, "toolbar=0,...");
      fenster.moveTo(200, 200);
    }
    // -->
    </script>
    
    Viel Spaß ;)
     
  3. Thof

    Thof Gast

    Hallo Neorun,

    ich hab' mich da wieder mal selber bei einem Fehler erwischt. Anstatt mir das, was du machen willst, genauer anzuschauen, habe ich versucht eine 1:1 Lösung zu finden...

    Wie wäre es, wenn du die Streams einfach in einem einzigen Fenster lädst?

    Hier ein Beispiel:

    1. JS-File (wird später eingebunden...)
    Code:
    // Variable, mit der du später auf das Fenster
    // refenzieren kannst - eigentlich genau so,
    // wie in deinem ursprünglichen Beispiel...
    var fenster = null;
    
    // Methode, mit der du den Titel und die URL
    // des oben definierten Fensters neu
    // festlegen kannst.
    // wenn das Fenster noch nicht definiert ist
    // (-> fenster == null), dann wird es geöffnet.
    // 
    // - "about:blank" lädt erstmal nur eine leere
    //    Seite
    // - "stream_fenster" ist der technische Name
    //   des Fensters, nicht der Titel ;-)
    // - "..." -> ich war einfach zu faul, alles wieder
    //   abzutippen :-! 
    function zeigeStream(url, titel) {
       if(fenster == null) {
          fenster = window.open("about:blank", "stream_fenster", "...");
       }
       fenster.location.href = url;
       fenster.name = titel;
    }
    
    2. HTML-Code
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
             "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
       <head>
          <title>Demo-Fernsteuerung</title>
          <script type="text/javascript" src="scripts/streamfenster.js"></script>
          <!-- alles, was du hier noch unterbringen willst... -->
       </head>
       <body>
          <h1>Stream-Fenster-Fernsteuerung</h1>
          <ul>
             <li><a href="javascript:zeigeStream('http://www.foo.com/tag.jsp','Tag-Stream');">Wechsel zum Tag-Stream</a></li>
             <li><a href="javascript:zeigeStream('http://www.foo.com/nacht.jsp','Nacht-Stream');">Wechsel zum Nacht-Stream</a></li>
          </ul>
       </body>
    </html>
    
    Mit etwas Bastelei könntest du die beiden Links noch so dynamisch gestalten, dass der angezeigte Text unterscheidet, ob das Fenster schon geöffnet wurde oder ob es noch nicht existiert ("Öffne Tag-Stream" -> "Wechsel zum Tag-Stream").

    Viel Spaß,
    Tom.
     

Diese Seite empfehlen