"We are back" « oc.at

Language-Umschaltung mit Javascript

grOOvekill@ 19.05.2003 - 13:56 674 9
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
S'gott,

ich habe eine Website gebastelt, die auf einem Frameset basiert. Es gibt eine Haupt und eine Unternavigationsleiste. Am oberen Bereich befindet sich ein Link, der von deutscher auf englische Sprache umschalten soll. Wichtig dabei ist natürlich, dass ich mich auf der dementsprechenden Seite, auf die ich mich mittels Haupt und Unternavigationsleiste navigiert habe, bleibe. Es soll also nicht einfach die ganz eSite neu aufgebaut werden.

Nun dachte ich daran, das ganz emit Javascript zu realisieren. Ich würde bei einem Klick auf den Link die aktuelle URL auslesen und den letzten Teil, nach dem letzten / einfach auf die englische Seitenbezeichnung austauschen (aus /projekte/2003/skaterpark.html wird /projekte/2003/skaterpark_engl.html).

Leider habe ich bis jetzt noch keine Möglichkeit gefunden, wie ich die URL als String einlesen kann. Ich brauche dann ja auch noch die Möglichkeit, nur den letzten Teil des Strings, also den Dateinamen der Seite, zu ändern.

Hat irgendjemand schon einemal etwas derartiges programmiert? Gibt es gar einfachere Lösungen für dieses Problem?

Bin wie immer dankbar für jede Hilfe!

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
die url in javascript:
window.location.xxx
http://selfhtml.teamone.de/javascri...te/location.htm

einlesen, parsen, setzen, geht alles mit javascript. einfach RTFM bei selfhtml machen :)

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
Will ja echt nicht lästig sein, aber Javascript gehört definitiv nicht zu meinen Stärken. Was genau meinst du mit parsen und setzen und wie sieht das in der Praxis aus? Sorry, dass ich so dumm frage, aber mir fehlt definitiv die Experience auf diesem Gebiet.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
er meint den string richtig zerlegen, damit du an der richtigen stelle dein _engl einsetzen kannst.

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
Alles klar, das ist ja genau das, was ich vorhabe. Ich kann jedoch auch auf hardcore-rtfm-selfhtml-ing nicht herausfinden, wie ich den letzten Teil beim Einlesen durch einen neuen ersetze. :(

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
einlesen:
var myURL = window.location

parsen:
http://developer.netscape.com/views...us_strings.html
(per string operatoren oder was auch immer dir einfällt :))

setzen:
window.location.href = "_eng.htm";

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
Mann, ich werd noch bescheuert! Das Ding funzt einfach nicht. Hab mal diese Funktion gebastelt:


function tauschen(pfadname){
var logs = pfadname.split(/\w+/);
for (i=0; i<logs.length; i++) {
document.write(logs[i]);
}
}


im body schick ich die URL mittels

var pfadname = window.location;
tauschen(pfadname);

hinein.

Beim diesem Teil hier: (/\w+/) bin ich mir aber nicht so sicher. Hier muß ja das Zeichen stehen, nachdem gesplittet werden soll. Wenn ich das richtig verstanden habe, wird das Zeug dann in ein Array eingelesen.

Ich bekomme aber eine Fehlermeldung nach der anderen. Kann sie gar nicht alle aufzählen!

AARGL!

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
versuch:
newlocation=window.location.href.replace(/\.([^.]+)$/,"_eng.$1");

das setzt vor den letzen . punkt den string _eng ein.
testen im browser zb mit:
javascript:alert(window.location.href.replace(/\.([^.]+)$/,"_eng.$1"))

alternativ könnte man auch direkt nur location.pathname verändern.
siehe http://devedge.netscape.com/library...e/location.html


(wenn natürlich schon ein _eng eingesetzt ist, wird eins hinzugefügt, weshalb man es vorher entfernen müsste)

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
Okay. Hab mal folgenden Code gebastelt, der auf einfach Seiten, also ohne Frameset ohne Probleme funktioniert. Ein wenig anspeiben tu ich mich jetzt nur bei eben einem Frameset. Bei einem Klick auf Englisch müssen in meinem Fall insgesamt vier Frames geändert werden.

Hier mal der Code:

<HTML>
<HEAD>
<TITLE>Language Bitching</TITLE>
<SCRIPT LANGUAGE="JavaScript1.2">
<!--
function Frames(URI1,F1,URI2,F2,URI3,F3,URI4,F4) {
Frame1=eval("parent."+F1);
Frame2=eval("parent."+F2);
Frame3=eval("parent."+F3);
Frame4=eval("parent."+F4);
Frame1.location.href = URI1;
Frame2.location.href = URI2;
Frame3.location.href = URI3;
Frame4.location.href = URI4;
}

//Language Settings
var aendern_in = "engl";
function gotoPage(sPage){
// ".html" in sPage suchen
var nPosHtml = sPage.lastIndexOf('.html');
if (nPosHtml < 0)
return; // invalid link (not .html)
// neue URL aufbauen
var sNewPage = sPage.substr(0, nPosHtml) + "_" + aendern_in + ".html";
// zur url navigieren
return window.location.replace(sNewPage);
}
//-->
</script>
</HEAD>

<BODY>

<a href="javascript:Frames('1.html','f1','2.html','f2','3.html','f3',gotoPage(parent.main.location),'f4')">English</a>
</BODY>
</HTML>

Mein Problem ist nun, dass ich beim fetten Teil irgendwie die aktuelle URL reinbekommen, in der Funktion gotoPage ändern und dann genau dort anhand der Variable site reinbekommen müsste.

Leider wird mir nur eine undefinded Site aufgerufen. Irgendwo ist da noch ein kleiner Haken, aber ich finde ihn nicht.

Any ideas?
Bearbeitet von grOOvekill@ am 20.05.2003, 10:55

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
man, he - das steht aber echt alles lang und breit erklärt im selfhtml:

tip: DOM - nodes
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz