Manuel: PopUp window.close

Hallo,
vorweg ich hab nachgeschaut im SELFHTML, aber nichts gefunden. Bin noch JS-Neuling (aber mit C Kenntnissen), also bitte um Rücksicht.

Mein Problem:

Habe mittels JS ein Fenster geöffnet (Fotogalerie):

<a href="javascript:ShowPicture(218,320,240)"><img src="Photos/DSCN0218_thumb.gif" alt="N-Dee" width="100" height="75" border="0"></a>

Deklariert im Dokument mit:

<script language="JavaScript" type="text/javascript" src="thumbnail.js"></script>
  <script language="JavaScript">
  <!--
    function ShowPicture(pictNr,pictWidth,pictHeight) {
      var maxNr = 301;
      if (pictNr <= maxNr) {
        ShowPictureForMe("DSCN0"+pictNr,pictWidth,pictHeight);
      }
    }
  // -->
  </script>

hinter ShowPictureForMe versteckt sich (in thumbnail.js) folgendes:

// Java-Script-Variable
// ----------------------
var popupNamePict = "MyPict";

// ----------------------
// Java-Script-Funktionen
// ----------------------
function ShowPictureForMe(myFile,myWidth,myHeight) {
 // open the popup window
 var popupURL = "pop/"+myFile+".html";
 if (navigator.userAgent.substring(0,4) == "iCab") {
  myWidth -= 16;
 } else if (navigator.appName == "Microsoft Internet Explorer") {
  if (navigator.appVersion.indexOf("MSIE 4") > 0) {
  } else {
  }
 } else if (navigator.appName == "Netscape") {
  if (navigator.appVersion.substring(0,3) <= "4.7") {
  } else {
  }
 }
 var popupArgs = "toolbar=0,location=0,directories=0,statusbar=0,menubar=0,scrollbars=0,resizable=0,width="+myWidth+",height="+myHeight;
 var popupIDPict = window.open(popupURL,popupNamePict,popupArgs);
 popupIDPict.location = popupURL;
 popupIDPict.focus();
}

Klappt bis jetzt gut, einzige Macke ist wenn ich die Größe ändere weil ich ein anderes Dokument mit anderer Größe in das "gleiche Fenster" laden will behält das Fenster logischerweise die Originalgröße bei und hat nicht die neue Größe - Dumm wenn die Fotos die da nur drin sind dann ne andere Größen haben.
<<-- ShowPicture(NeueNummer,NeueWidth,NeueHight)

Umgehen des Problems leuchtet mir ein; Das Fenster beim Anklicken eines neuen Objekts vorher (falls vorhanden) mit close() schliessen da ja beim öffnen eines neuen Fensters auch die neue Fenstergröße als Parameter angenommen wird. Geht das allein mit dem Fensternamen? Wie muss der tag dann heissen?

<a CLOSE()?? href="javascript:ShowPicture(....

Zu finden ist das ganze unter www.mesh-project.de/ndee/Graphics/Photos/5JahreBO/photos.html

Danke - Manu

  1. Hi,

    Umgehen des Problems leuchtet mir ein; Das Fenster beim Anklicken eines neuen Objekts vorher (falls vorhanden) mit close() schliessen da ja beim öffnen eines neuen Fensters auch die neue Fenstergröße als Parameter angenommen wird.

    Du könntest auch mit resizeTo() arbeiten.

    Geht das allein mit dem Fensternamen?

    Nein; der Name ist lediglich für die target-Wahl von Bedeutung. Wenn JavaScript etwas mit dem Fenster machen soll, braucht es eine Referenz (sprich: Variable) darauf. Dass bei gleichem Namen innerhalb von window.open() ein bestehendes Fenster wiederverwendet wird, ist übrigens nicht zwingend verlässlich.

    <a CLOSE()?? href="javascript:ShowPicture(....

    Es gibt kein HTML-Attribut namens "close", und die Klammern sind dort ohnehin syntaktisch falsch.

    Cheatah

  2. Hallo Manuel,

    <a CLOSE()?? href="javascript:ShowPicture(....

    Nachdem Cheatah Dir das mit dem resizeTo schon gesagt hat, will ich Dich auf noch etwas hinweisen: href="javascript: ..." ist böse[tm]. Verwende besser Links der Form

    <a href="#" onClick="...; return false;">

    Pflichtlektüre für Popups generell ist http://home.t-online.de/home/dj5nu/js-popup.html, da ist diese Problematik beschrieben.

    Schönes Wochenende,

    Christian