Hallo !
Ha! Schon wieder einer, der den Opera schlecht machen will! Da fühle ich mich zum Anwalt berufen. >:)
Die von dir beschriebenen Probleme mit Opera 5.02 kann ich mit Opera 5.12 nicht bestätigen. Eventuell treten diese nur 'online' auf, was ich nicht geprüft habe, aber auch nicht annehme.
In dem von dir genannten Archivthread http://forum.de.selfhtml.org/archiv/2001/6/25928/ hatte Antje ja bereits eine Zusammenfassung geliefert.
Die Ausgangsfunktion
var w = open("", "bla", "width=300,height=200")
sollte demnach lediglich so abgeändert werden:
var w = window.open("leer.html", "bla", "width=300,height=200")
Mehr war nicht.
- Opera benötigt im 'window.open' tatsächlich eine Angabe zu einer zu ladenden HTML-Datei:
[pwindow = window.open("http://absoluter Pfad/leer.html","","");]
Opera wollte als URI ein URI haben und nicht einen Leerstring.
Skandal! =:o
In diese Datei kann man dann per 'document. write(ln)' reinschreiben.
Wichtig ist der absolute Pfad zu dieser Datei!
Davon weiß ich nichts. Bei Opera 5.12 nicht.
- Die Bilddatei, die man z.B. als Hintergrundbild (dynamisch) in diese Datei laden will, muss ebenfalls absolut referenziert werden.
Dass sich bei Angabe eines Pfades zur 'leer.html' die darin enthaltenen Bilder nach deren URI orientieren ist nur konsequent.
- Es scheint mir tatsächlich so zu sein, dass Opera das Bild dann aber erst anzeigen kann, wenn es im Cache ist. Könnte sich also anbieten, das gewünschte Bild in der aufrufenden HTML-Datei vorzuladen.
Dass die Bilder erst angezeigt werden, wenn sie geladen sind, versteht sich von selbst. Ein "Vorladen" der Bilder ist bei Opera 5.12 sicher nicht erforderlich.
Da die anderen Browser damit gar keine Probleme haben und das Pfad-Gehubere nicht brauchen, frage ich in meinem Skript vorher den Browser ab und backe nur für Opera dieses Extrawürstchen.
Das verstehe ich jetzt gar nicht. Haben denn die anderen Browser ein Problem mit der ggf. absoluten Adressierung der leer.html oder der Bilder? Das sollte mich aber verwundern.
Um dabei die mögliche Maskierung von Opera als 'anderer' Browser zu umgehen, muss man die Eigenschaft 'navigator.userAgent' verwenden. Im zurückgelieferten String befindet sich bei Opera immer irgendwo die Teil-Zeichenkette 'Opera'. Über eine 'string.indexOf'-Auswertung ermittelt man, ob dieser Teilstring (Vorsicht: großes 'O'!) vorkommt. Wenn das Ergebnis '-1' ist, ist es NICHT Opera.
[ if(string.indexOf("Opera",0) == -1){...alle anderen Browser}else{...Opera} ]
Dolle Sache, aber so überflüssig wie ein Kropf.
Bei meinem Skript scheint also jetzt alles halbwegs zu funktionieren (uff...), wer will, kann sich's ja mal ansehen unter:
http://www.xpw18.de/grafik/backgrounds.html
Tut es. Allerdings wartet mein Mozilla noch immer darauf, dass irgendetwas in den Body geschrieben wird. Ein würde ihm, glaube ich, schon genügen.
Merkwürdig bleibt dabei nur noch:
Beim ersten Klick auf eine der Hintergrundkacheln bleibt das Fensterchen leer, wenn man nochmal eine Kachel anklickt, gehts dann. Vielleicht der Cache-Effekt?
Dieses Phänomen konnte ich in keinem meiner Browser beobachten.
Was mich daran zum Grunzen ärgert, ist, dass es sich bei all dem eigentlich um olles Standard-Javascript handelt,
Das hast du recht, dass ist "olles" JavaScript, was Opera (zumindest 5.12) aber auch problemlos erledigt hat.
und Opera ist mittlerweile bei 5.x angekommen. Zur Strafe müsste man dafür eigentlich eine Rücksetzung auf Versionsnummer 0.9 verordnen
Mir will scheinen, du bist nicht ganz auf der Höhe der Zeit. Die aktuelle Opera-Version ist 6!
Mit diesem geht es dann auch so:
opener.html
---------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<title>Opener</title>
<script type="text/javascript">
<!--
function oeffnen2(bildname)
{
var w = window.open("window2.html","cover","width=400,height=350,left=100,top=30");
w.document.getElementById("bilddiv").style.backgroundImage = "url("+bildname+".jpg)";
w.focus();
}
//-->
</script>
<p>
<a href="javascript:oeffnen2('bild1')">Bild 1</a><br>
<a href="javascript:oeffnen2('bild2')">Bild 2</a><br>
<!-- und so weiter und so fort -->
</p>
---------------------------------------------------------------------
(nicht sonderlich ausgereift, ich weiß. Aber es läuft.)
weiter2.html
---------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<title id="Titel">Bild</title>
<style type="text/css">
html { height: 100%; }
body { height: 100%;
margin:0;
padding:0;
}
#bilddiv { width: 100%;
height:100%;
}
</style>
<div id="bilddiv">
</div>
---------------------------------------------------------------------
Modernste Technik nach DOM, die sonst scheinbar nur noch mein IE 6 beherrscht! :-)
Mozilla 0.9.6 will mir einreden, 'bilddiv' habe keine Eigenschaften. :-(
Ein direktes Ansteuern eines BODY-Hintergrundbildes im Zweitfenster wollte mir allerdings beim besten Willen nicht gelingen. Daher der Umweg über das DIV.
...und für das völlig überflüssige Gebastel ein dicke Rechnung an Operasoft schicken....(und gleich noch weitere Rechnungen an die anderen auch MS, NS usw. für das Gefummel, was einem deren fehlerhafte Softwarebrocken aufzwingen).
Dieses Problem kenn ich doch irgendwoher. Nur würde ich die dickste Rechnung woanders hinschicken, nicht nach Norwegen. :-)
Gruß,
kerki