Christiane Reimann: window.open

Hallo,

ich habe ein Script geschrieben, welches eine Bilddatei in einem neuen Fenster öffnet. Mithilfe vom screen-objekt habe ich die Fenstergröße auch optimal an die Bildschirmauflösung anpassen können. Dummerweise bleibt das Bild im Fenster jedoch in seiner ursprünglichen Größe; gibt es eine Möglichkeit, die Bildgröße ebenfalls als Parameter o.ä. durchzugeben?

Danke für die Antwort!!!

  1. Hallo,

    ja, theoretisch gibt es die Möglichkeit. Praktisch wirst Du sie nicht nutzen wollen: Veränderungen an der Bildgröße per HTML führen zur grauenvoll schlechten Ergebnissen. (Einfach mal probieren: in HTML width und height ändern).

    Eine praktikable Möglichkeit wäre: Du legst versch. Versionen des Bildes für versch. Auflösungen an und verlinkst entsprechend Deinem Ergebnis auf die passende.

    Grüße,
    Utz

    --
    Mitglied im Ring Deutscher Mäkler
  2. Tag Christiane.

    ich habe ein Script geschrieben, welches eine Bilddatei in einem neuen Fenster öffnet. Mithilfe vom screen-objekt habe ich die Fenstergröße auch optimal an die Bildschirmauflösung anpassen können. Dummerweise bleibt das Bild im Fenster jedoch in seiner ursprünglichen Größe; gibt es eine Möglichkeit, die Bildgröße ebenfalls als Parameter o.ä. durchzugeben?

    Wie sieht denn dein Code aus? Grundsätzlich kannst du von einem Bildobjekt ja Breite und Höhe auslesen:

    function open_IMG(quelle) {  
      var obj = new Image();  
      obj.src = quelle;  
      obj.onload = function() { var w = this.width + 20;  
                                var h = this.height + 20;  
                                var win = window.open(this.src, "Bild", "width="+w+",height="+h+",left=0,top=0");  
                                win.focus();  
                              }  
      obj.onerror = function() { alert(this.src + " konnte nicht geladen werden."); }  
    }
    

    Natürlich könntest du onload auch eine explizite Funktion zuweisen:

    obj.onload = function() { deineFunktion(this); }  
      
    function deineFunktion(bObj) {  
      var w = bObj.width + 20;  
      var h = bObj.height + 20;  
      var title = bObj.src.substring(bObj.src.lastIndexOf("/")+1, bObj.src.length);  
      win = window.open("","Detailansicht","width="+w+",height="+h+",left=0,top=0,menubar=no,status=no");  
      win.document.open("text/html");  
      win.document.write("<html><head><title>"+title+"<\/title><\/head><body style='background-color:white'>");  
      win.document.write("<div style='text-align:center'><img src='"+this.src+" width='"+bObj.width+"' height='"+bObj.height+"'><br>");  
      win.document.write("<input type='button' name='close' value='Fenster schliessen' onClick='self.close();'>");  
      win.document.write("<\/div><\/body><\/html>");  
      win.document.close();  
      win.focus();  
    }
    

    Und im HTML:

    <a href="./dein_bild.png" onclick="open_IMG(this.href);return false;">Klick</a>

    Wie Utz schon schrieb, solltest du allerdings das Skalieren sein lassen.

    Siechfred

    --
    Früh übt sich ... (74kB)
    Der schwierigste Blick ist immer der über den Tellerrand -- man glaubt gar nicht, wie hoch so ein Tellerrand sein kann.
    1. Tag Christiane.

      Ein paar Korrekturen und Ergänzungen noch.

      function deineFunktion(bObj) {
        var w = bObj.width + 20;
        var h = bObj.height + 20;

      Besser wäre hier vielleicht, die Breite mit 40 und die Höhe mit 60 zu addieren. Ob es dann trotzdem für alle Browser ausreichend groß ist, dass keine Scrollbalken erscheinen, ist allerdings nicht sicher. Aber die Popupdimensionen habe ich ziemlich großzügig bemessen, also sollten sie eigentlich in den meisten Browsern ausreichen.

      win.document.write("<div style='text-align:center'><img src='"+this.src+" width='"+bObj.width+"' height='"+bObj.height+"'><br>");

      Hier muss es korrekt lauten:

      win.document.write("<div style='text-align:center'><img src='"+bObj.src+"' width='"+bObj.width+"' height='"+bObj.height+"'><br>");

      Ansonsten funktioniert es so.

      Siechfred

      --
      Früh übt sich ... (74kB)
      Der schwierigste Blick ist immer der über den Tellerrand -- man glaubt gar nicht, wie hoch so ein Tellerrand sein kann.