ECMAScript (Location, Array's)

Nächste Frage Vorherige Frage Zeige Lösung an Gesamtpunktzahl

Die Übertragung der aktuellen HTML-Seite erfolge verschlüsselt (SSL). Zu der Seite gehöre www.example.org Die Datei bb.htm befinde sich im Unterverzeichnis /aa Was wird dann ausgegeben?
<script>
var arr = [
     'location.href=',    location.href,
   '\nlocation.protocol=',location.protocol,
   '\nlocation.hostname=',location.hostname,          
   '\nlocation.pathname=',location.pathname,
   '\nlocation.port=',    location.port,
   '\nlocation.hash=',    location.hash,
   '\nlocation.search=',  location.search
   ]; 

   alert( arr.join("") );
</script>
location.href=http://www.example.org/aa/bb.htm
location.protocol=http:
location.hostname=www.example.org
location.pathname=/aa/bb.htm
location.port=
location.hash=
location.search=
Mit var obj = document.createElement('a') wird ein DOM-Objekt erzeugt. Mit obj.href = ... wird href-Property gesetzt. Was wird dann ausgegeben?
<script>
var obj = document.createElement('a');
    obj.href = "http://www.example.com/aa/bb.htm?key=val#anchor";

var atg = [
     'obj.href=',    obj.href,
   '\nobj.protocol=',obj.protocol,
   '\nobj.hostname=',obj.hostname,          
   '\nobj.pathname=',obj.pathname,
   '\nobj.hash=',    obj.hash,
   '\nobj.port=',    obj.port,
   '\nobj.search=',  obj.search
   ]; 
   alert( atg.join("") );
</script>
obj.href=http://www.example.com/aa/bb.htm?key=val#anchor
obj.protocol=http:
obj.hostname=www.example.com
obj.pathname=/aa/bb.htm
obj.hash=#anchor
obj.port=
obj.search=?key=val
In jeder HTML-Seite soll (klickbar) die Verzeichnisstruktur von HTML-Seiten angezeigt werden.
Beispiel: Bei bekannter url = 'http://www.domain.de/aaa/bbb/ccc.htm' soll mit der Funktion url2pfad(url) etwa die a-Tags erstellt werden:
<a href='http://www.domain.de/'>http://www.domain.de/</a>
<a href='http://www.domain.de/aaa/'>aaa/</a>
<a href='http://www.domain.de/aaa/bbb/'>bbb/</a>
<a href='http://www.domain.de/aaa/bbb/ccc.htm'>ccc.htm</a>
Auf der Seite erscheint sichtbar etwa:

     http://www.domain.de/   aaa/   bbb/   ccc.htm
     ---------------------   ----   ----   -------
Betrachten sie bitte das folgende Code-Schnipsel:
<script>
function url2pfad( url ) {
  var aa, tmp, len, href = [ ], 
      s = "<a href='xxx'>yyy</a>";
  
  aa = url.replace('//','o0OO').split('/'); 
  aa[0] = aa[0].replace('o0OO','//');  
 
  tmp = aa.join('/oO0o').split('oO0o'); /*1*/
  txt = aa.join('/oO0o').split('oO0o'); 
  len = txt.length;
  aa = [];                              /*2*/
  for (i = len - 1; i >= 0; i -= 1) {
    aa.unshift(s.replace('xxx',tmp.join("")).replace('yyy',txt[i]));
    tmp.pop();                          /*3*/
  } return aa.join('\n'); 
}
// Testaufruf erfolge etwa so:
var s = url2pfad('http://www.domain.de/aaa/bbb/ccc.htm');
        document.write( s );            /*4*/
</script>
Bei der Stelle /* 1 */ entspricht die Variable temp einem Array.
Bei der Stelle /* 2 */ wird der Array aa gelöscht.
Bei der Stelle /* 3 */ wird der String temp gespeichert.
Das script-Tag stehe im HTML-Body. Dann wird an der Stelle /* 4 */ die folgende Zeichenkette in das HTML-Dokument geschrieben:
<a href='http://www.domain.de/'>http://www.domain.de/</a>
<a href='http://www.domain.de/aaa/'>aaa/</a>
<a href='http://www.domain.de/aaa/bbb/'>bbb/</a>
<a href='http://www.domain.de/aaa/bbb/ccc.htm'>ccc.htm</a>
Mit einer funktionierenden Funktion url2pfad( url ) kann eine klickbare Verzeichnisstruktur durch
<script>document.write( url2pfad(document.location.href) );</script> erreicht werden.
Ist im Verzeichnis http://www.domain.de/aaa/ eine 'default'-Datei index.htm vorhanden, so wird durch einen Klick auf <a href='http://www.domain.de/aaa/'>aaa/</a> vom Server die Datei index.htm angefordert. Ist dort keine 'default'-Datei vorhanden, so kann ggf. die verzeichnisstruktur von http://www.domain.de/aaa/ im Browser angezeigt werden.