Hi folks,
kann es sein, dass ein Sprung zu einem Bookmark innerhalb der selben htm-Datei den Onload-Handler gar nicht auslöst?
Merkwürdig dabei: wenn ich die Eigenschaften der "neuen" Datei aufrufe, steht dort das Bookmark im Pfad ... aber der Onload-Handler tut nichts ...
Habe ein Workaround gefunden:
window.onload = bodyanpassen;
function bodyanpassen ()
{
if (document.all)
{
// Aktuelle Dokument-URL parsen fuer Vergleiche mit Link-Angaben
var adresse = document.URL;
var hatmarke = adresse.split("#");
var gesamtpfad = hatmarke[0].split("chm::");
var pfadinchm = gesamtpfad[1];
var pfad = hatmarke[0].split("/");
var anzahlelemente = pfad.length;
var letzteselement = anzahlelemente - 1;
var datei = pfad[letzteselement];
// Initialisierungen
var aadresse = "";
var apfad = "";
var aletzteselement = 0;
var adatei = "";
var linktext = "";
var anzahllinks = document.links.length;
for (var zaehler=0;zaehler<anzahllinks;zaehler++)
{
// Link parsen fuer mehr Information
aadresse = document.links[zaehler] + "";
ahatmarke = aadresse.split("#");
apfad = ahatmarke[0].split("/");
aletzteselement = apfad.length - 1;
adatei = apfad[aletzteselement];
// enthaelt der Link ein Bookmark?
if (ahatmarke[1] != "")
{
// liegt der bookmark in diesem dokument?
if (datei == adatei)
{
// href ersetzen
linktext = document.links[zaehler].innerHTML;
zielneu = pfadinchm + document.links[zaehler].hash;
neuertext = "javascript:void(window.location.href = '" + zielneu + "');location.reload();";
document.links[zaehler].href = neuertext;
}
}
}
}
}
Dieser Teil des Scripts sorgt dafür, dass Links, die im selben Dokument auf einen Anker springen sollen, den onload-Handler auch triggern. Funktioniert gut. Links, die kein Bookmark anspringen bleiben unberührt, genauso wie links, die einen Bookmark in einer anderen Datei anspringen.
Wie ihr seht, habe ich das Ganze für eine .chm-Hilfe gebaut. Der Code muss also bequemerweise auch nur für den IE passen.