warum funktioniert mein javascript nicht auf dem mac (IE 5)!!!
sany
- javascript
0 Vinzenz0 Struppi0 Andreas-Lindig
also ich habe folgendes problem auf dem mac. mein mouseover will nicht so wie es dringend brauche!!!
ich komme also auf die seite unter umständen ist alles ok.... fahre über meinen ersten navigationspunkt der ändert die farbe ABER ES ÖFFNET SICH NICHT DIE UNTERNAVIGATION! erst wenn ich ein paar mal aktualiseirt habe geht es.
bin für jeden tipp dankbar...
das hier meine navigationsdatei (top.html)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<link rel="STYLESHEET" type="text/css" href="navig.css">
<link rel="STYLESHEET" type="text/css" href="../allgemein.css">
<script language="JavaScript" src="mouseover.js"></script>
<script language="JavaScript">
browser = navigator.appName;
ie = "Microsoft Internet Explorer";
netscape = "Netscape";
navig = new Array();
navig[0] = "navig1";
navig[1] = "navig2";
navig[2] = "navig3";
navig[3] = "navig4";
navig[4] = "navig5";
</script>
</head>
<body bgcolor="#65769A" style="background-image:url(../images/top_neu.jpg); background-repeat:no-repeat;">
<table width="550" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div id="navig"><img src="../images/clear.gif" width="1" height="75" alt="" border="0"><br>
<a href="#" onmouseover="anzeigen('navig1');imgOn('navig','registrierung');imgOff('navig','multimedia','warenkorb','service','wir')"><img src="../images/nav/nav_registrierung_i.gif" width="115" height="24" alt="" border="0" name="registrierung"></a><a href="#" onmouseover="anzeigen('navig2');imgOn('navig','multimedia');imgOff('navig','registrierung','warenkorb','service','wir')"><img src="../images/nav/nav_multimedia_i.gif" width="99" height="24" alt="" border="0" name="multimedia"></a><a href="#" onmouseover= "anzeigen('navig3');imgOn('navig','warenkorb');imgOff('navig','registrierung','multimedia','service','wir')"><img src="../images/nav/nav_warenkorb_i.gif" width="99" height="24" alt="" border="0" name="warenkorb"></a><a href="#" onmouseover="anzeigen('navig4');imgOn('navig','service');imgOff('navig','registrierung','multimedia','warenkorb','wir')"><img src="../images/nav/nav_service_i.gif" width="120" height="24" alt="" border="0" name="service"></a><a href="#" onmouseover="anzeigen('navig5');imgOn('navig','wir');imgOff('navig','registrierung','multimedia','warenkorb','service')"><img src="../images/nav/nav_wir_i.gif" width="117" height="24" alt="" border="0" name="wir"></a></div></td>
</tr>
<tr>
<td><div id="navig1"><a href="registrierung/login_mitglieder.php" class="registrierung" target="inhalt">Login für Mitglieder</a> | <a href="registrierung/neuanmeldung_mitglieder.html" target="inhalt" class="registrierung">Neuanmeldung für Interessenten</a> | <a href="registrierung/neuanmeldung_fotografen.html" class="registrierung" target="inhalt">Anmeldung für Fotografen</a></div><div id="navig2"><a href="multimedia/sounds.html" class="multimedia" target="inhalt">Sounds</a> | <a href="multimedia/videos.html" class="multimedia" target="inhalt">Video</a> | <a href="multimedia/intros.html" class="multimedia" target="inhalt">Intros</a> | <a href="multimedia/animationen.html" class="multimedia" target="inhalt">Animationen</a></div><div id="navig3"><a href="warenkorb/warenkorb.php" class="warenkorb" target="inhalt">Warenkorb ansehen</a></div><div id="navig4"><a href="fotografen/service.html" class="fotografen" target="inhalt">Ihr Wunschmotiv</a> | <a href="fotografen/wir-suchen.html" class="fotografen" target="inhalt">Wir suchen für Sie</a></div><div id="navig5"><a href="wir/wir.html" class="wir" target="inhalt">Die Fakten</a> | <a href="wir/agb.html" class="wir" target="inhalt">AGB´s</a> | <a href="wir/benutzerhinweis.html" class="wir" target="inhalt">Benutzerhinweis</a> | <a href="wir/kontakt.html" class="wir" target="inhalt">Kontakt</a></div></td>
</tr>
</table>
<script>
bildladen();
</script>
</body>
</html>
und das hier ist mein javascript (mouseover.js):
function bildladen() {
if (document.images) {
registrierungon = new Image(); registrierungon.src = "../images/nav/nav_registrierung_a.gif";
registrierungoff = new Image(); registrierungoff.src = "../images/nav/nav_registrierung_i.gif";
multimediaon = new Image(); multimediaon.src = "../images/nav/nav_multimedia_a.gif";
multimediaoff = new Image(); multimediaoff.src = "../images/nav/nav_multimedia_i.gif";
warenkorbon = new Image(); warenkorbon.src = "../images/nav/nav_warenkorb_a.gif";
warenkorboff = new Image(); warenkorboff.src = "../images/nav/nav_warenkorb_i.gif";
serviceon = new Image(); serviceon.src = "../images/nav/nav_service_a.gif";
serviceoff = new Image(); serviceoff.src = "../images/nav/nav_service_i.gif";
wiron = new Image(); wiron.src = "../images/nav/nav_wir_a.gif";
wiroff = new Image(); wiroff.src = "../images/nav/nav_wir_i.gif";
}
}
function imgOn(welche,imgName) {
if (document.images) {
if (browser == netscape) {
document.layers[welche].document[imgName].src = eval(imgName + "on.src");
}
else if (browser == ie) {
document.all[welche].document[imgName].src = eval(imgName + "on.src");
}
}
}
function imgOff(welche,imgName,imgName2,imgName3,imgName4) {
if (document.images) {
if (browser == netscape) {
document.layers[welche].document[imgName].src = eval(imgName + "off.src");
document.layers[welche].document[imgName2].src = eval(imgName2 + "off.src");
document.layers[welche].document[imgName3].src = eval(imgName3 + "off.src");
document.layers[welche].document[imgName4].src = eval(imgName4 + "off.src");
}
else if (browser == ie) {
document.all[welche].document[imgName].src = eval(imgName + "off.src");
document.all[welche].document[imgName2].src = eval(imgName2 + "off.src");
document.all[welche].document[imgName3].src = eval(imgName3 + "off.src");
document.all[welche].document[imgName4].src = eval(imgName4 + "off.src");
}
}
}
function zeigen(welche) {
if (browser == netscape) {
document.layers[welche].visibility = 'visible';
}
else if (browser == ie) {
document.all[welche].style.visibility = 'visible';
}
}
function verstecken(welche) {
if (browser == netscape) {
document.layers[welche].visibility = 'hidden';
}
else if (browser == ie) {
document.all[welche].style.visibility = 'hidden';
}
}
function anzeigen(wen) {
for (var i = 0; i < navig.length; i++) {
if (navig[i] == wen) {
zeigen(navig[i]);
}
else {
verstecken(navig[i]);
}
}
}
Hallo sany,
also ich habe folgendes problem auf dem mac. mein mouseover will nicht so wie es dringend brauche!!!
<script language="JavaScript" src="mouseover.js"></script>
Tipp 1:
weg mit language='JavaScript' - rein mit type='text/javascript'
if (document.images) {
if (browser == netscape) {
document.layers[welche].document[imgName].src = eval(imgName + "on.src");
}
else if (browser == ie) {
document.all[welche].document[imgName].src = eval(imgName + "on.src");
}
Tipp 2:
Dieses Uraltkonstrukt geht davon aus, dass es nur den IE (Version >=4) und den Netscape (Version genau gleich 4.xx - und 6.0) gibt. Neuere Netscapes kennen kein document.layers mehr und es gibt viele, viele Benutzer anderer Browser, hier z.B. hat Mozilla laut Statistik (die ich nicht selbst gefälscht hab', also glaub' ich ihr auch nicht) einen Anteil von über 20%, die können deine Navigation sowieso nicht sehen.
Programmier sie komplett neu und schau' Dir dazu den JavaScript-Bereich in SELFHTML genau an.
Gruss,
Vinzenz
also ich habe folgendes problem auf dem mac. mein mouseover will nicht so wie es dringend brauche!!!
- wenn ich die seite öffne dann zeigt mir der IE 5 manchmal nur die navigation ohne hintergrundbild an.
- allerdings muss ich jedesmal die seite aktuallisieren damit ich die unternavigation erscheint, wenn ich über die navigation fahre.
ich komme also auf die seite unter umständen ist alles ok.... fahre über meinen ersten navigationspunkt der ändert die farbe ABER ES ÖFFNET SICH NICHT DIE UNTERNAVIGATION! erst wenn ich ein paar mal aktualiseirt habe geht es.
bin für jeden tipp dankbar...
[skript gesnippt]
Dieses Skript ist hoffnungslos veraltet. Du benutzt document.all und document.layers. Das eine ist IE 4.x, das andere NC 4.x. Du hast Glück, das neuere IE's document.all unterstützen.
Du solltest auf jeden Fall die DOM Methoden noch einbauen und ganz wichtig nicht aif navigator.appName prüfen, sonder die Funktionen, die du benutzen möchtest.
Also z.b. document.layers oder all
Typischerweise (ich glaub irgendwo auf der selfhtml seite ist auch so was zu finden) benutzt man ein Funktion, die den Layer sucht in etwa so:
///////////////////////////////////////////////////////////
// getById(id [, win])
function getById(id, win)
{
var doc = window.document;
if(win) doc = win.document;
if(typeof id == 'undefined') return null;
var obj = null;
if(document.getElementById) obj = doc.getElementById(id);
else if(document.layers) obj = _doc.layers[id];
else if(document.all) obj = doc.all[id];
return obj;
}
Daneben ist dein Verwendung von eval unnötig, falsch und fehlerträchtig bzw. kannst du dadurch wesentlich schwerer Fehler feststellen.
document.all[welche].document[imgName2].src = eval(imgName2 + "off.src");
document.all[welche].document[imgName2].src = self[imgName2 + "off"].src;
Ansonsten, sind Menu mit Javascript sowieso keine gute Idee, da JS nicht als Vorraussetzung zum benutzen einer Seite vorrausgesetzt werden sollte.
Struppi.
Hi,
wirklich helfen kann ich Dir auch nicht, aber im IE5-Mac functioniert so einiges nicht (nicht nur JavaScript, sondern auch CSS). Ich konnte aber keinen Unterschied feststellen, ob man nun document.all oder document.getElementById benutzt.
Gruß, Andreas