• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

JavaS. Fenster schließt nicht automatisch.

Neorun

Uelzener Rambour
Registriert
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
 

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

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.