NS 4.7 hängt bei OnMouseOver...WARUM?
werning
- javascript
Hallo,
Das Problem:
Netscape v4.7 hängt bei dem Befehl onMouseOver, nicht unbedingt bei dem ersten Kontakt, jedoch
nach mehreren "überfahren" der Grafiken. (ca. 5sec wischen)
Im Schutzmodus von Norton lässt sich dieser Crash ab un an abfangen, teilweise stürzt jedoch auch
das gesamte Betriebssystem ab. Win98 , diverse Rechner.
Der OnMousOver Befehl ist in einen Layer eingebunden.
Eine Testseite finden Sie unter :
http://www.werning.com/testbereich/kreisend.html
bitte einfach über die inneren 3 Kreise oben links fahren.
Leider konnte ich bisher keine Ursache für diesen Fehler finden, auch eine reduzierung des Scriptes
brachte keinen Erfolg, so dass ich sicher bin ein fehlerfreies Script zu haben und die Ursache nun im
Browser suche.
Microsoft Explorer 4.0 zeigt keinen Fehler im Skript an.
Über eine Nachricht, bezw. über die Möglichkeit einer Abhilfe würde ich mich freuen
Hmmm....
Der Bug ist durchaus da, auch unter NN4.61 unter Linux.
Allerdings stuerzt dabei nicht der ganze Rechner ab... manche Betriebssysteme haben halt einen funktionierenden Speicherschutz ;-)
Leider habe ich auch keine konkrete Idee... aber Antje ( <g> ) vielleicht ?!?
MfG,
Bio
Huhu :-),
Der OnMousOver Befehl ist in einen Layer eingebunden.
ich bin zwar nicht Antje, aber ich hab trotzdem ne Idee.
Laut http://bert/www/www.teamone.de/selfhtml/tebj.htm#a18 ist der EventHandler OnMouseOver
bei Netscape nur in <a> und <area> erlaubt, was zwar nicht bedeutet, dass dass man keinen <a> mehr
in ein <div> packen darf, aber evtl. liegt es ja daran.
Jan
Hallo Werning,
Netscape v4.7 hängt bei dem Befehl onMouseOver, nicht unbedingt bei dem ersten Kontakt, jedoch
nach mehreren "überfahren" der Grafiken. (ca. 5sec wischen)
Der OnMousOver Befehl ist in einen Layer eingebunden.
»» http://www.werning.com/testbereich/kreisend.html
Leider konnte ich bisher keine Ursache für diesen Fehler finden, auch eine reduzierung des Scriptes
brachte keinen Erfolg, so dass ich sicher bin ein fehlerfreies Script zu haben und die Ursache nun im
Browser suche.
Mir kommt Deine Funktion Bildwechsel() "komisch" vor. Bilder in Layern sollten doch eigentlich über window.document.layers[X].document.images[Bildnr] angesprochen werden (hab` bei einer Menusteurung lange gebraucht, bis ich Bilder richtig ansprechen konnte <g>).
Ich konnte leider nicht überprüfen, ob irgendwas passiert, da meine NN 4.5 als einzige Aktion onMousover="self.kill" ausführte ;-)
Gruß AlexausW
Nochmal Hallo,
Mir kommt Deine Funktion Bildwechsel() "komisch" vor. Bilder in Layern sollten doch eigentlich über window.document.layers[X].document.images[Bildnr] angesprochen werden (hab` bei einer Menusteurung lange gebraucht, bis ich Bilder richtig ansprechen konnte <g>).
Ich konnte leider nicht überprüfen, ob irgendwas passiert, da meine NN 4.5 als einzige Aktion onMousover="self.kill" ausführte ;-)
Sorry, ich war wohl ein wenig vorschnell <umniwinselnd />, hab` leider nicht gleich gesehen, daß Du nur mit Divs arbeitest, aber vielleicht liegt ja da der Hund begraben <ohnedasüberprüftzuhaben>
Gruß AlexBausW
Ich bin`s wieder <g>
Ich hab` mal in meinem Code nachgeschlagen (<g>natürlich der "programmierte" Mist</g>) und folgendes entdeckt:
window.document.layers[layer].document.layers[0].document.images["lay"+layer+"_Bild"+num].src
Bei meinem Menu verwendete ich Divs in denen Layer liegen (ein Div außen, ein Layer innen). Was mich auch wunderte, der NN scheint das äußere Div im Falle der absoluten Positionierung wie einen Layer zu betrachten, weshalb ich eben diesen komischen Bandwurm braucht, um ein Bild im Layer zu wechseln.
das erste document.layers ist also das absolute <div> (bitte verzeiht die umgangssprachliche Beschreibung <g />), und das zweite document.layers meint den innen liegenden <layer>.
Vielleicht lag ich also mit der ersten Vermutung gar nicht so falsch, ich sollte wohl aber vorher immer mal in meinen eigenen Code reinschnuppern, bevor ich hier Behauptungen aufstelle <smile>
Gruß AlexBausW
Hallo Alle,
window.document.layers[layer].document.layers[0].document.images["lay"+layer+"_Bild"+num].src
Bei meinem Menu verwendete ich Divs in denen Layer liegen (ein Div außen, ein Layer innen). Was mich auch wunderte, der NN scheint das äußere Div im Falle der absoluten Positionierung wie einen Layer zu betrachten, weshalb ich eben diesen komischen Bandwurm braucht, um ein Bild im Layer zu wechseln.
das erste document.layers ist also das absolute <div> (bitte verzeiht die umgangssprachliche Beschreibung <g />), und das zweite document.layers meint den innen liegenden <layer>.
Da ich mir so gerne selbst antworte <g />, und meinen Namen gerne öfters im Archiv finden würde <strong><g /></strong> poste ich mal ein URL zu einer Seite, auf der ein Beispiel des angesprochenen Menues zu finden ist.
http://www.wetzlar-online.de/wzonline/test/alex/new_dsgn/index.htm
Dort habe ich onMouseover-Events benutzt, und dabei die images wie oben genannt angesprochen (für NN). Allerdings ist das nur eine Testversion, d.h. es wird nicht jeder MausOffer angeboten.
Im Hauptmenue funktioniert momentan nur "Aktuelles & Termine", das Submenue unter "Stadtinfo & Rundgang" hat noch einige andere Mousovers.
AlexBausW
P.S.: Ich habe zum Testen in der lokalen Datei die Divs und Layers in _eine_ Tabelle eingeschlossen. Bis auf die Positionen hat dort alles andere im NN_4.5 funktioniert (muß ich noch mal bei <smile>).
Hallo werning,
Wie Alex im Beitrag eine Ebene Höher erwähnte:
hab` leider nicht gleich gesehen, daß Du nur mit Divs arbeitest, aber vielleicht liegt ja da der Hund begraben <<
Es liegt daran. Der IE kennt keine Layer, wie der NS, sondern nur DIV, womit du ja auch arbeitest. Um Es im NS normal zum Laufen zu bekommen, kapsle einfach einen Layer in jedes DIV-Objekt.
(ich lasse hier mal die Spitzen Klammern weg, weil ich nicht weiß, ob sonst die Tags beim Anzeigen interpretiert werden)
Um bei deinem Quelltext zu bleiben:
div id="Ball02" style="position:absolute; left:60; top:60; width:50; z-index:4; visibility:hide"
a href="lstg-nt.html" onMouseOver="Bildwechsel(bild1,auskunft2); self.status='Netzwerkleistungen der stulgys.de GmbH';return true" onMouseOut="Bildwechsel(bild1,auskunftleer); self.status='Fangen Sie einen Button';return true"
img name=bimg02 src="images/kugel2.gif" height="50" width="50" alt="Netzwerkleistungen" border=0 br /a
/div
Daraus machst du:
div id="Ball02" style="position:absolute; left:60; top:60; width:50; z-index:4; visibility:hide"
layer id="dummy"
a href="lstg-nt.html" onMouseOver="Bildwechsel(bild1,auskunft2); self.status='Netzwerkleistungen der stulgys.de GmbH';return true" onMouseOut="Bildwechsel(bild1,auskunftleer); self.status='Fangen Sie einen Button';return true"
img name=bimg02 src="images/kugel2.gif" height="50" width="50" alt="Netzwerkleistungen" border=0 br /a
/layer
/div
Die Spitzen Klammern für die Tags mußt du natürlich wieder einfügen. Wichtig ist, daß du eine ID auch für die Layer angibst, ansonsten könnte es wohl Probleme geben. Das habe ich zwar noch nie probiert, obs wirklich welche gibt, aber ich habe es gelesen und deshalb gleich so gemacht.
Wenn du das bei allen DIV Tags gemacht hast, die für die entsprechenden Operationen in Frage kommen, dürfte alles funktionieren. Bei mir gabs so jedenfalls noch nie Probs :-)
Sven
Huhu,
(ich lasse hier mal die Spitzen Klammern weg, weil ich nicht weiß, ob sonst die Tags beim Anzeigen interpretiert werden)
http://www.teamone.de/selfaktuell/forum/forumsfaq_2.htm#a4
Jan
Hallo werning
Netscape v4.7 hängt bei dem Befehl onMouseOver, nicht unbedingt bei dem ersten Kontakt, jedoch
nach mehreren "überfahren" der Grafiken. (ca. 5sec wischen)
Im Schutzmodus von Norton lässt sich dieser Crash ab un an abfangen, teilweise stürzt jedoch auch
das gesamte Betriebssystem ab. Win98 , diverse Rechner.
Sowohl NN 4.7 als auch NN 4.5 verabschieden sich relativ früh. Eine konkrete Abhilfe kann ich jedoch auch nicht bieten.
Die Ursachen können sehr vielfältig sein. Ich liste einfach mal einige Möglichkeiten auf:
Die kreisenden Layers befinden sich innerhalb einer Tabelle. Dies verursacht fast immer Probleme im NN. Gebe sie im Quelltext als letztes außerhalb jeder Tabelle an. Setze außerdem den z-index herauf. Statt 2,3,4,5 einfach 20,30,40,50
Für den Bilderwechsel verwendest du die Variable bild1, die du vorher auf 6 gesetzt hast. Gib dem eigentlichen Bild einen Namen:
name="bild1" und verzichte auf die Variable. Das läuft dann auch, wenn du die Anzahl der Bilder verändert hast.
Dein eigentliches Problem ist jedoch die Kombination von mouseovers, Statuszeile, Drehung und den Bildwechsel.
Ich tippe darauf, es kommt zum Speicherüberlauf, weil die events laufend feuern bzw. einander überlagern. Da der IE schneller ist als der NN und eventuell intern alles anders verarbeitet, merkt man es dort nicht.
Versuche einmal folgendes:
onMouseOver="Bildwechsel(bild1,auskunft4,'Kontaktaufnahme mit der stulgys.de GmbH'); return true;"
function Bildwechsel(Bildnr,Bildobjekt,statuszeile)
{
window.document.images[Bildnr].src = Bildobjekt.src;
self.status=statuszeile;
}
Eventuell mußt du auch speichern welcher event gerade aktiv ist, wenn sich die Maus über die Kreise befindet.
Ich hoffe aber, mit der Verlagerung der Layers, hat sich dein Problem erledigt.
Viele Grüße
Antje
Hallo,
vielen Dank schon mal für die Antworten.
Ich habe die Layer jetzt definiert wie von Sven Laukat vorgeschlagen, hat leider nicht viel geändert.
Hier noch die Fehlermeldung, vieleicht kennt sich damit wer aus:
NETSCAPE verursachte einen Fehler durch eine ungültige Seite
in Modul JS3240.DLL bei 015f:60021cad.
ciao thomas
Hallo Kollege ;-)
nach dem Motto weniger ist mehr habe ich alle onmouseover befehle entfernt!
Und siehe da - alles läuft (zumindest die getesteten 10 min) einwandfrei.
Es scheint also wirklich an den Mousseoverbefehlen zu liegen
(welche ich jetzt nicht mehr prüfen kann weil ich sie ja entfernt habe *smile)
Lösungsvorschlag:
Mouseoverbefehle aufs nötigste reduzieren und dabei schauen, wielviele davon Netscape auf deiner Seite verträgt.
mfG
Gerhard Feil
(Gegge)