location.hash im Browser?
Martin Fleck
- browser
hallo,
hat schon mal jemand von Euch window.location.hash im Opera (7.11) zum Laufen bekommen? Wenn ich versuche die Eigenschaft auszulesen, bekomme ich immer eine Hinweismeldung mit "Warning". Im IE und Mozilla funktioniert es. Danke.
--
Martin Fleck
Hallo, Martin,
hat schon mal jemand von Euch window.location.hash im Opera (7.11) zum Laufen bekommen? Wenn ich versuche die Eigenschaft auszulesen, bekomme ich immer eine Hinweismeldung mit "Warning".
Wenn kein Anker (fragment identifier) in der URL enthalten ist -- jaja, ich weiß, dass der Anker formal nicht Teil der URL ist --, ist window.location.hash ein String mit der Länge 0 (Null). Das kannst du mit »typeof window.location.hash« und »window.location.hash.length« in Erfahrung bringen. Opera hat die dumme Angewohnheit, beim Ausgeben eines Strings der Länge Null via alert() ein »Warning« auszugeben. Das ist nicht weiter schlimm, schließlich willst du location.hash wahrscheinlich sowieso nur intern benutzen und beim Ausgeben könntenst du vorher überprüfen, wie lang der String ist (Eigenschaft length). Abgesehen von diesem Ausgabe-»Problem« funktioniert location.hash meiner Erfahrung nach problemlos im Opera 7.11, du kannst also damit arbeiten...
Also wo ist nun das Problem?
Mathias
hallo Matthias,
Also wo ist nun das Problem?
ich habe ein zweiteiliges Frameset, im oberen Frame sind die Verweise und im unteren die Anker. Nun klicke ich im oberen Frame einen Verweis an und er springt im unteren Frame an die richtige Stelle. Nun lass ich mir über onMouseDown im unteren Frame den window.location.hash ausgeben, dieser ist allerdings immer null (bekomme die Meldung "warning".).
--
Martin Fleck
hallo Matthias,
hier habe ich ein Beispiel zu dem Opera-Problem upgeloadet:
http://www.action-script.com/misc/hash/frameset.htm
Bei mir im Opera 7.11 funktioniert das Auslesen von windows.location.hash nicht, im IE und Mozilla dagegen problemlos.
--
Martin Fleck
P.S.: Im Titel sollte eigentlich von Beginn an Opera stehen, weiß nicht wie da Browser hereingekommen ist ;)
Hallo, Martin,
hier habe ich ein Beispiel zu dem Opera-Problem upgeloadet:
http://www.action-script.com/misc/hash/frameset.htm
Das verblüfft mich allerdings, darauf weiß ich keine Antwort, das ist ein handfester Bug (den gibt's anscheinend schon seit Opera 5). Du kannst dir höchstens eine Alternativlösung überlegen. Was hast du denn konkret vor? Vielleicht lässt sich der Wert anders übergeben, beispielsweise könntest du beim Anklicken eines Links im einen Frame den hash aus dem Link auslesen (this.hash) und über im Variablenraum des Framesets speichern (über top, http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/), oder direkt im unteren Frame (top.bottom) zum auslesen -- ich weiß, es ist umständlich, vielleicht geht es auch einfacher, je nachdem, was du genau vorhast.
Mathias
Hallo Matthias,
Das verblüfft mich allerdings, darauf weiß ich keine Antwort, das ist ein handfester Bug (den gibt's anscheinend schon seit Opera 5). Was hast du denn konkret vor?
Ich brauche das für eine Navigation in Flash, die mit den Vor- und Zurück-Buttons des Browser bedienbar werden soll.
Das mit dem Link würde nicht funktionieren, da ich nicht immer einen HTML-Link anklicke (zumindestens nicht wenn ich auf den Zurück-Button klicke).
Über die Vor- und Zurück-Funktion des Browser lade ich derzeit einen unsichtbares Frame mit einer entsprechenden URL-Variable. Der Nachteil ist der klickende Sound von Windows, den wollte ich umgehen, indem ich innerhalb einer Seite springe.
Ich muss im unteren Frame nur den Hash auslesen können, gibt es da noch andere Möglichkeiten?
Vielen Dank.
--
Martin Fleck
Dachte gerade ich hätte eine Lösung gefunden, einfach window.location.href auslesen und dann mit indexOf die Position des "#" ermitteln, ab dann den Ankernamen heraustrennen. Was im IE und Mozilla funktioniert, geht natürlich im Opera wieder nicht. Wie komme ich im Opera daran, ohne auf das nächste Update zu warten?
--
Martin Fleck