Lieber Andreas,
ich kann Dir vielleicht helfen. Ich hatte ein ganz anderes Problem zu lösen und musste daher diese zum-Anker-springen-Funktionalität mittels Javascript nachbilden. Das folgende Script ersetzt Verweisziele der Art "#Anker" in "{gegenwärtige URL}?a=Anker", berücksichtigt also keine Verweisziele, bei denen vor dem Ankernamen noch eine Datei angegeben ist (z.B. seite.html#Anker). Dort müsstest Du vielleicht noch Anpassungen vornehmen.
Das Script wird einfach in jede HTML-Datei eingebunden, in der diese Funktionalität erwünscht ist.
----file: "to_anchor.js"----
(function () {
// Aufruf mit Anker? Dann nach dem Laden zum entsprechenden Element vorscrollen!
if (window.location.search.match(/\?a=/i)) {
var a = window.location.search.replace(/^.*a=([^&=]+).*$/i, "$1"),
elm = document.getElementById(a),
elms = document.getElementsByName(a);
if (!elm && elms && elms.length > 0) {
elm = elms[0];
}
if (elm) {
window.scrollBy(0, elm.offsetTop);
/*
Hier könnte weiterer Code folgen...
*/
}
}
// Alle Verweise mit Anker entsprechend korrigieren
var i, a, atts, url,
baseURL = window.location.pathname;
for (i = 0; i < document.links.length; i++) {
url = '';
// originalen href-Wert holen
if (document.links[i].href.match(/#.+/)) {
atts = document.links[i].attributes;
for (a = 0; a < atts.length; a++) {
if (atts[a].nodeName.match(/^href$/i)) {
url = atts[a].nodeValue;
}
}
if (url != '') {
if (url.match(/^#/)) {
// URL verweist auf dieselbe Seite: Pfad ergänzen!
url = window.location.pathname + url;
}
document.links[i].href = url.replace(/^(.*)#.+$/i, "$1")
+ "?a="
+ url.replace(/^.*#([^#]+)$/i, "$1");
}
}
}
} ()
)
Liebe Grüße aus Ellwangen,
Felix Riesterer.
--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)