Netscape Problem bei JavaScript
Arngrim
- browser
0 Andreas Bierhals0 Arngrim0 holger kuehne0 Arngrim
Hallo,
ich habe eine kleine Seite entwickelt, die auch unter dem IE hervorragend laeuft. NS hingegen gibt mir einen Fehler aus (ganz nebenbei, unten in der Statuszeile erscheint "JavaScript Error: Type "javascript:" into location for details --> was bedeutet das? oder anders gefragt: falls das ein Feature ist, wie nutze ich es?
Nun konkret zum Problem. Geht prinzipiell nur darum, einen RollOver Effekt zu haben, zusaetzlich soll ein gedrueckter Knopf gedrueckt bleiben, unabhaengig von anderen Mausklicks irgendwo im Rest des Fensters, ebenso nach einem Refresh. Wie gesagt, das klappt unter IE auch ganz gut.
Auszugsweise sieht mein Code so aus:
...
var currentSelection = 0;
function Select(number)
{
if (currentSelection != number)
{
if (number == 1) document.images['home'].src=img1.src;
if (number == 2) document.images['news'].src=img3.src;
...
}
else
{
if (number == 1)
{
alert ("in number == 1");
document.images['home'].src = img2.src;
alert ("end number == 1");
}
if (number == 2) document.images['news'].src=img4.src;
...
};
};
...
<a href="javascript:NewLink(1)" onMouseover="document.images['home'].src=img2.src" onMouseout="Select(1)"><img alt="home" img src="pics/2/home.jpg" name="home" width=100 height=35 border=0></a><br>
Dabei ist der Parameter NUMBER einfach nur die Nummer des zu aendernden Buttons, und currentSelection die Nummer des gerade aktiven Buttons (hierueber sorge ich dafuer, dass der gerade ausgewaehlte Button immer das "gedrueckte" Bild hat).
Ich habe zwei ALERTS eingebaut, um genauer verfolgen zu koennen was passiert. Der erste Text wird noch ausgegeben, danach scheint es zu knallen. Jedenfalls wird das zweite ALERT nicht mehr erreicht.
Hat irgendjemand eine Idee, wo hier das Problem liegen koennte? Ist Netscape vielleicht an irgendwelchen Stellen etwas pingelig, was die Syntax angeht (irgendwelche unbedingt noetigen ;'s zum Beispiel, die man beim IE nicht braucht)?
Danke im voraus!
Ciao,
Arngrim
Moin,
ich habe eine kleine Seite entwickelt, die auch unter dem IE hervorragend laeuft. NS hingegen gibt mir einen Fehler aus (ganz nebenbei, unten in der Statuszeile erscheint "JavaScript Error: Type "javascript:" into location for details --> was bedeutet das? oder anders gefragt: falls das ein Feature ist, wie nutze ich es?
wie die Meldung bereits sagt, mußt Du dann den Text "javascript:" in die URL-Zeile eingeben, worauf sich die "JavaScript-Konsole" von Netscape öffnet. In dieser werden alle JavaScript-Fehlermeldungen gesammelt.
»» alert ("in number == 1");
»» document.images['home'].src = img2.src;
»» alert ("end number == 1");
Dieser Code sieht für mich so erstmal richtig aus, warum es nicht funktioniert, muß irgendwelche anderen Ursachen haben. Wurde das Bild richtig geladen, befindet es sich innerhalb eines <div> oder <layer>'s? Guck Dir am besten erstmal die Fehlermeldungen an...
Viele Grüße
Andreas
Hallo,
hier die Meldung aus javascript: (danke fuer den Hinweis :))
document.images.home has no properties.
Das Bild wird richtig geladen und befindet sich genau genommen sogar innerhalb von zwei <DIVS>, hier der Sourcecode Auszug:
<div align="center">
<div style="position:absolute; top: 10px; left: 15px">
<a href="javascript:NewLink(1)" onMouseover="document.images['home'].src=img2.src" onMouseout="javascript:Select2(1)"><img alt="home" img src="pics/2/home.jpg" name="home" width=100 height=35 border=0></a><br>
</div>
...
</div>
Ich habe auch schon vermutet, dass es mit den <divs> zusammenhaengt, aber wie kann ich das Bild jetzt richtig ansprechen?
Ciao,
Arngrim
Hi
Alle Elemente, die innerhalb von absolut positionierten div's stehen müssen fuer den Netscape immer nach dem Schema:
document.layername.document.... oder document.layers[LayerNr].document....
angesprochen werden.
Also in deinem Fall:
document.layers[0].document.images['home'].src=img2.src
Da das aber nur im Netscape so functioniert, musst du natuerlich eine funktion schreiben
in der du je nachdem welcher Browser verwendet den entsprechenden Befehl ausfuehrst.
also:
function Bildwechsel();
if (document.layers)
document.layers[0].document.home.src=img2.src;
else document.images['home'].src=img2.src;
Holger
Prima, danke, jetzt funktioniert es:)
Bei der Gelegenheit ist mir dann auch mal wieder krass der Geschwindigkeitsunterschied zwischen IE und NS aufgefallen... Ich aktualisiere die Buttons bei jedem Refresh von einem anderen Frame aus und der NS packt es einfach nicht, die Teile schon an Ort und Stelle zu haben, wenn meine Funktion den aktiven Button highlighten will... Der IE hat damit keine Probleme (naja, zumindest hier lokal auf der Platte :))
Das ist jetzt kein Problem mehr, habe ich schon geloest, fands aber dennoch interessant.
Ciao und nochmals Danke,
Arngrim