php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[JavaScript] Frame reload + string replace über JS?


 
mch2k
12-03-2006, 14:52 
 
Hallo!

Habe mit JS kaum erfahrung und würde gerne folgendes lösen:

In einem Frameset gibt es einen Inhalts und einen Menü Frame,
im Menü Frame kann man über einen Link die Sprache des menüs wechseln, der link lädt die menü seite neu und ändert eine PHP Variable "$lang".

Nun möchte ich aber, dass beim klicken dieses links auch der inhaltsframe neu geladen wird und die sprache ändert...

prinzipell stelle ich mir das wie folgt vor:

beim klicken des links aktiviere ich ein Javascript, welches sich die momentan im inhalts-frame angezeigte url holt, einen sting-replace durchführt ("_german" wird durch "_english" ersetzt) und die neue URL an das frame sendet..

ist das mit JS möglich, wenn ja, wie in etwa sähe das script aus?

vielen dank! gruß martin

 
reallife
12-03-2006, 15:28 
 
Da du beide Seiten neu laden möchtest, wäre es doch sinniger, das Frameset komplett neu zu laden. Also angenommen, deine index.php stellt das Framesat dar, in deinem Menüframe ändert der User die Sprache, das Frameset lädt sich neu und dann versorgst du über die index.php das Frameset.

<script type="text/javascript">
var url = window.top.location.href;
if ( url.indexOf('_german') > 0 )
{
url = url.replace('_german', '_english');
window.top.location.href = url;
}

if ( url.indexOf('_english') > 0 )
{
url = url.replace('_english', '_german');
window.top.location.href = url;
}
</script>

 
mch2k
12-03-2006, 15:57 
 
Ich hatte (der einfachheit halber) nicht erwähnt, dass das komplette frameset aus mehreren frames besteht als nur den 2..

Daher möchte ich nicht das komplette frameset neu laden...

habe versuch deinen code umzuschreiben, allerdings funktioniert es noch nicht.. woran könnte es liegen?

die funktion wird nun im link per onclick aufgerufen, bewirkt aber nix..

der name des inhalts-frames ist "middle"

function switchlang() {
var url = parent.middle.location.href;
if ( url.indexOf('_german') > 0 )
{
url = url.replace('_german', '_english');
parent.middle.location.href = url;
}

if ( url.indexOf('_english') > 0 )
{
url = url.replace('_english', '_german');
parent.middle.location.href = url;
}
};

EDIT: ich korrigiere.. es funktioniert nur teilweise.. komischerweise vom englischen ins deutsche, umgekehrt aber nicht.. und wenn dann immer nur einfach.. also von englisch nach deutsch funktioniert es, dann aber wieder nach englisch bewrikt nix..

 
mch2k
12-03-2006, 16:13 
 
Hey!


Habe das Script nocheinmal umgeschrieben.
und gebe beim aufrufen des scriptes nun an von welcher sprache in welche gewechselt werden soll..

nun funktioniert alles so wie es soll!

DANKESCHÖN FÜR DEINE HILFE, reallife!

function switchlang(from,to) {
var url = parent.middle.location.href;
if ( url.indexOf(from) > 0 )
{
url = url.replace(from, to);
parent.middle.location.href = url;
}
};

 
wahsaga
13-03-2006, 10:12 
 
Original geschrieben von mch2k
es funktioniert nur teilweise.. komischerweise vom englischen ins deutsche, umgekehrt aber nicht..
Daran ist nix komisch, das ist ganz normal, wenn man zwei genau das gegenteilige bewirkende IFs hintereinander macht ...

Ein else if wäre da wohl angebrachter gewesen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:21 Uhr.