vir
19-02-2006, 17:53
Hallo!
Ich bin noch ziemlich unbehofen was Javascript angeht.
Was ich will:
Eine Seite soll ein Bild anzeigen, jedoch nicht in Originalgröße sondern kleiner (da Originalgröße für den Anfang zu groß wäre).
Wenn man mit der Maus auf das (klein angezeigte) Bild rüberfährt, soll es in Originalgröße angezeigt werden, verlässt man das Bild mit dem Mauszeiger, soll wieder die kleine Darstellung zum Vorschein kommen.
Dazu habe ich mir folgendes gedacht:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Bilderanzeige</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../style.css" type="text/css">
</head>
<body>
<table align='center'>
<tr><td>Text above</td> </tr>
<tr><td>
<img src='../Bilder/005.jpg' name='bild'
onmouseover='ShowOriginal()'
onmouseout='ShowPreview()'
onclick='window.close()'></img>
</td></tr>
<tr><td align='center'>Doppelklick auf das Bild schließt das Fenster.</td></tr>
</table>
<script type='text/javascript'>
//document.bild = new Image();
//document.bild.src = "../Panta/005.jpg";
var ImageX = document.bild.width;
var ImageY = document.bild.height;
document.write(ImageX + 'x' + ImageY);
// 0: Preview, 1: OriginalSize
var current_view = 0;
function ShowPreview()
{
current_view = 0;
document.bild.width = PreviewX;
document.bild.height = PreviewY;
}
function ShowOriginal()
{
current_view = 1;
document.bild.width = ImageX;
document.bild.height = ImageY;
}
var PreviewX = 700;
var PreviewY = (700 / ImageX) * ImageY;
ShowPreview();
</script>
</body>
</html>
Das Problem soweit ich es festgestellt habe: "document.write(ImageX + 'x' + ImageY);" liefert ab und zu "0x0" oder "25x25", auf die Größe des Bildes wird also zugegriffen wenn das Bild noch gar nicht in seiner vollen Größe geladen ist?!
Es klappt natürlich wunderbar wenn das Bild schon gecached ist.
Demzufolge muss ich warten bis es geladen ist...
Ich hab es so versucht:
while (1) {
window.setTimeout("void", 10000);
if (document.bild.complete) {
var ImageX = document.bild.width;
var ImageY = document.bild.height;
break;
}
}
Etwas blöd, funktioniert aber unterm Firefox. Der Konqueror tut sich da schwer ("A script is causing KHTML to freeze...").
Habt ihr eine andere Idee wie ich etwas ausführen kann wenn es erst geladen wurde?
Bye
Ich bin noch ziemlich unbehofen was Javascript angeht.
Was ich will:
Eine Seite soll ein Bild anzeigen, jedoch nicht in Originalgröße sondern kleiner (da Originalgröße für den Anfang zu groß wäre).
Wenn man mit der Maus auf das (klein angezeigte) Bild rüberfährt, soll es in Originalgröße angezeigt werden, verlässt man das Bild mit dem Mauszeiger, soll wieder die kleine Darstellung zum Vorschein kommen.
Dazu habe ich mir folgendes gedacht:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Bilderanzeige</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../style.css" type="text/css">
</head>
<body>
<table align='center'>
<tr><td>Text above</td> </tr>
<tr><td>
<img src='../Bilder/005.jpg' name='bild'
onmouseover='ShowOriginal()'
onmouseout='ShowPreview()'
onclick='window.close()'></img>
</td></tr>
<tr><td align='center'>Doppelklick auf das Bild schließt das Fenster.</td></tr>
</table>
<script type='text/javascript'>
//document.bild = new Image();
//document.bild.src = "../Panta/005.jpg";
var ImageX = document.bild.width;
var ImageY = document.bild.height;
document.write(ImageX + 'x' + ImageY);
// 0: Preview, 1: OriginalSize
var current_view = 0;
function ShowPreview()
{
current_view = 0;
document.bild.width = PreviewX;
document.bild.height = PreviewY;
}
function ShowOriginal()
{
current_view = 1;
document.bild.width = ImageX;
document.bild.height = ImageY;
}
var PreviewX = 700;
var PreviewY = (700 / ImageX) * ImageY;
ShowPreview();
</script>
</body>
</html>
Das Problem soweit ich es festgestellt habe: "document.write(ImageX + 'x' + ImageY);" liefert ab und zu "0x0" oder "25x25", auf die Größe des Bildes wird also zugegriffen wenn das Bild noch gar nicht in seiner vollen Größe geladen ist?!
Es klappt natürlich wunderbar wenn das Bild schon gecached ist.
Demzufolge muss ich warten bis es geladen ist...
Ich hab es so versucht:
while (1) {
window.setTimeout("void", 10000);
if (document.bild.complete) {
var ImageX = document.bild.width;
var ImageY = document.bild.height;
break;
}
}
Etwas blöd, funktioniert aber unterm Firefox. Der Konqueror tut sich da schwer ("A script is causing KHTML to freeze...").
Habt ihr eine andere Idee wie ich etwas ausführen kann wenn es erst geladen wurde?
Bye