Sebastian: www.xyz.de/?parameter#anker

Beitrag lesen

Hallo alle zusammen,

ich hab nen verdammten scheiß Fehler gemacht. Ich hab jemanden für ne Drucksache nen Link bzw. ne Adresse gegeben, ohne sie vorher frei zu schalten und zu testen, da der Inhalt noch nicht fertig war. Ich bemerkte erst nach dem Drucken mein Problem, nämlich das ich den Link, so wie er war, nicht zum funzen bekam. Da sich das Drucken nicht mehr rückgängig machen lässt, mir aber bis zur Veröffentlichung noch n paar Tage bleiben, versuche ich schon seit ner Weile, des in den Griff zu bekommen, nur "mit ohne" passenden Erfolg.

Problem: Da ich ein Frameset verwende und trotzdem Links direkt von außen auf Unterseiten verweisen können sollen, lade ich die Unterseiten über ein Parameter stehend nach dem netten Fragezeichen per JavaScript in den betreffenden Frame. Da ich nun für bewusste Sache mit Textankern zu hantieren begann, dachte ich, ich mach einfach nach dem Parameter noch ne Raute und den Anker und lese das auch per JavaScript aus. Das ergebe dann das Muster "www.xyz.de/?parameter#anker".
So weit so gut: Im MSIE geht sowas sogar, nur unter Mozillas und Operas und Konquerors muggt die Sache. Ich komm nicht an den Text nach der Raute rann, FireFox entfernt ihn sogar ganz aus der URI, was noch um so hässlicher ist.

Ich benötige: Möglichst ne Idee für einen der genannten Browser bzw. am besten ne allgemeingültige Crossbrowserlösung (falls einer Bock hat, mir beim bauen von einer zu helfen). Ich würde dabei gern den String der Parameter (im Beispiel "parameter") und des Ankers (im Beispiel "anker") oder einfach alles zusammen (also z.B. "?parameter#anker") in einer JavaScript-Variable stehen haben wollen, um die restliche Zerlegung ist schon gesorgt.

Mein bisheriger Ansatz:

function initframe(){

werta = location.search + ""
if(werta != ""){
  wertb = werta.split("?")
  if(wertb[1] != ""){

if(wertb[1].indexOf("%26")>-1){ werte = wertb[1].split("%26") } else { werte = wertb[1].split("&") }
   if(werte[0].length == 1){ spindex = 1 } else { spindex = 0 }
   if(werte[0].length == 1){ if(werte.length > 1){ initframel(werte[0],true) } else { initframel(werte[0],false) } } else { zeichne() }

wertc = ""

if(spindex > 0 && werte.length > 1){
    if(werte[spindex].length > 1){
     // Diese If-Schleife sucht nach einem zweiten Parameter, welches eine Version in einer jeweiligen Sprache einer Datei ansteuern kann.
     wertc = werte[0] + "ni4j__" + werte[spindex].split("%7C")[0] + ".htm"
    }
   } else {
    if(spindex == 0) {
     wertc = "dni4j__" + werte[spindex].split("%7C")[0] + ".htm"
    }
   }

alert(werte[spindex])  // Versucht ma, ob ihr eine brauchbare Ausgabe mit der Alertbox bekommt ...
   if(werte[spindex].split("%7C").length > 1){
    wertc = wertc + "#" + werte[spindex].split("%7C")[1]
   }

if(wertc.length > 0 && wertc.indexOf("fallback") == -1) {
    wertd = window.setTimeout("zielframe.location.href = '" + wertc + "'",1)
   }

} else weitereladefunktionen()
} else weitereladefunktionen()

}

"%7C" ist die Kodierung der Raute ("#").
Das Parameter "fallback" steht nicht für einen Dateinamen, sondern für Bildschirme mit weniger als 1024 px Breite, weswegen es auch aussortiert wird.
Zum Aufbau der Dateinamen:
Ich verwende Dateinamen des folgenden Musters: "dni4j__name.htm"
"d" ist die Sprache (hier Deutsch, "e" ist Englisch usw., "x" ist sprachneutral)
"ni4j" stammt noch aus den guten alten Zeiten von Netscape 4.X und MSIE 4. Dabei steht genau jene Zeichenfolge allgemein für Crossbrowser-Kompatibilität.
"name" steht für den wirklichen Inhalt.

Ich würde mich über jede Hilfe freuen
Beste Grüße
Sebastian