window.open
Christiane Reimann
- javascript
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!!!
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
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
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