HighDots Forums  

Frameset nachladen - Dateinamen dynamisch ermitteln

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Frameset nachladen - Dateinamen dynamisch ermitteln in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Andreas Haberl
 
Posts: n/a

Default Frameset nachladen - Dateinamen dynamisch ermitteln - 10-15-2004 , 08:51 AM






Hallo,

ich hab in der FAQ die Lösung gefunden, wie man mittels Javascript das
Frameset nachladen kann, was auch wunderbar funktioniert.

Damit ich nicht für jede einzelne Datei das Script anpassen muss,
möchte ich gerne die Dateinamen dynamisch ermitteln lassen und habe
dabei folgende Lösung gefunden:

var Dateien = "../index2.html?" + document.URL;

if (top.frameset_geladen + "" != "okay"){
if(document.images)
top.location.replace(Dateien);
else
top.location.href = Dateien ;
}

Das funktioniert, soweit ich das beurteilen kann, einwandfrei. Gibt es
bei dieser Lösung einen Nachteil, den ich nicht bedacht habe?

Das zweite Problem, für das ich noch keine Lösung gefunden habe, ist
der Name des Frameset. Der Name selbst ist zwar konstant, aber die
Verzeichnis-Ebene ist ja nicht immer dieselbe. Mal ist es
"index2.html", mal "../index2.html" oder gar "../../index2.html".
Gibt es dafür auch eine einfache Möglichkeit, das dynamisch ermitteln
zu lassen?

anderl
--
Alexander Barth in d.r.s.f:
Die absolute Professionalität besteht aber darin, ein Bild in der
Öffentlichkeit zu bieten, welches dem Anhang die gewünschte
Selbsttäuschung ermöglicht.

Reply With Quote
  #2  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Frameset nachladen - Dateinamen dynamisch ermitteln - 10-15-2004 , 01:21 PM






Andreas Haberl wrote:

Quote:
var Dateien = "../index2.html?" + document.URL;

if (top.frameset_geladen + "" != "okay"){
if(document.images)
top.location.replace(Dateien);
else
top.location.href = Dateien ;
}

Das funktioniert, soweit ich das beurteilen kann, einwandfrei. Gibt es
bei dieser Lösung einen Nachteil, den ich nicht bedacht habe?
Ja.

1. document.URL ist bestenfalls veraltet. Nimm location bzw. location.href.
2. Was hat document.images mit top.location.replace() zu tun? Richtig,
genau gar nichts. Teste genau das, was Du auch benutzt:

if (top.location.replace)
{
// ...
}

Genauer, aber weniger abwärtskompatibel:

var t;
if ((t = typeof top.location.replace) == "function"
Quote:
| (t == "object" && top.location.replace))
{
// ...
}

Siehe auch <http://pointedears.de/scripts/test/whatami> und
isMethodType() in <http://pointedears.de/scripts/types.js>.

Quote:
Das zweite Problem, für das ich noch keine Lösung gefunden habe, ist
der Name des Frameset. Der Name selbst ist zwar konstant, aber die
Verzeichnis-Ebene ist ja nicht immer dieselbe. Mal ist es
"index2.html", mal "../index2.html" oder gar "../../index2.html".
Gibt es dafür auch eine einfache Möglichkeit, das dynamisch ermitteln
zu lassen?
Du kannst location.path auslesen, die Pfadtiefe ermitteln:

location.path.match(/\//g).length

und dann so viele ../ davorhängen, wie nötig sind:

loc = loc.replace(new RegExp("^" + regex_esc(base_path), g),
for (var i = 0; i < len; i++)
{
loc = "../" + loc
}

Was machen Benutzer ohne J(ava)Script?


PointedEars


Reply With Quote
  #3  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Frameset nachladen - Dateinamen dynamisch ermitteln - 10-16-2004 , 05:55 AM



Thomas 'PointedEars' Lahn wrote:

Quote:
Du kannst location.path auslesen, die Pfadtiefe ermitteln:

location.path.match(/\//g).length

und dann so viele ../ davorhängen, wie nötig sind:

loc = loc.replace(new RegExp("^" + regex_esc(base_path), g),
"");

Quote:
[...]

PointedEars


Reply With Quote
  #4  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Frameset nachladen - Dateinamen dynamisch ermitteln - 10-16-2004 , 10:04 AM



Georg Maaß wrote:

Quote:
Thomas 'PointedEars' Lahn wrote:
2. Was hat document.images mit top.location.replace() zu tun? Richtig,
genau gar nichts.

Das ist nicht ganz richtig. Üblicherweise dient doccument.images als ein
Unterscheidungsmerkmal zwischen NN2 und NN3.
Dann ist die "übliche Methode" eben Unfug.

Quote:
Laut D. Flanagan wurde location.replace mit NN3 eingeführt. Ich war zwar
der Ansicht, daß es erst mit NN4 eingeführt worden sei, aber wenn Flanagan
Recht hat, dann bestünde ein Zusammenhang nämlich, daß beide im selben
Browser neu eingeführt wurden.
Flanagans Machwerk ist seit mehreren Jahren nicht nur hoffnungslos
veraltet, es propagiert auch gänzlich unsinnige Techniken.

Quote:
Teste genau das, was Du auch benutzt:

if (top.location.replace)
{
// ...
}

Diese Empfehlung, so zu testen, ist trotzdem zu beachten, insbesondere,
wenn wie hier nur ein einziges Feature tatsächlich genutzt wird.
Full ACK


PointedEars


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.