Toon posts:

[JS] bestandsnaam uit URL halen

Pagina: 1
Acties:
  • 110 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Korte vraag: hoe doe ik dat?

Lange vraag: ja, ik heb JS manual / GoT search / google / hersens gebruikt. Mijn idee was om document.URL danwel window.location.pathname vanaf het eind van de string af te zoeken naar / of \. Heb dit geimplementeerd en vervolgens werkt het in Mozilla (1.2.1) en niet in IE (6). Voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<html><head></head><body>
<script language=javascript>
<html><head></head><body>
<script language=javascript>

function heelmoeilijk1() {
    var url = "d:\\html\\test.html"
    for(var index = url.length; index > 0; index--) {
        if(url[index] == '\\' || url[index] == '/') {
            document.write('dit gaat goed!<br>');
            document.write('(resultaat: '+url.substring(index+1,url.length)+')<br>')
            return
        }
    }
}

function heelmoeilijk2() {  
    var url = "d:/html/test.html"
    for(var index = url.length; index > 0; index--) {
        if(url[index] == '\\' || url[index] == '/') {
            document.write('dit gaat ook goed!<br>');
            document.write('(resultaat: '+url.substring(index+1,url.length)+')<br>')
            return
        }
    }
}

function heelmoeilijk3() {  
    var url = document.URL
    for(var index = url.length; index > 0; index--) {
        if(url[index] == '\\' || url[index] == '/') {
            document.write('dit gaat ook nog eens goed!<br>');
            document.write('(resultaat: '+url.substring(index+1,url.length)+')')
            return
        }
    }
}
heelmoeilijk1()
heelmoeilijk2()
heelmoeilijk3()
</script>
</body>
</html>


Dit geeft in IE niks en in Moz:
code:
1
2
3
4
5
6
dit gaat goed!
(resultaat: test.html)
dit gaat ook goed!
(resultaat: test.html)
dit gaat ook nog eens goed!
(resultaat: test.html)

Zodoende weet ik het ook niet meer. Dus nogmaals: hoe extraheer ik de bestandsnaam uit de URL?

(dit alles is voor een menusysteem, waarbij de positie in de menuboom wordt bepaald via de bestandsnaam)

Alvast bedankt.

[edit] voorbeeldcode iets explicieter gemaakt

[ Voor 43% gewijzigd door Verwijderd op 13-03-2003 20:59 ]


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

"You're only as good, as what you did last week."


Verwijderd

Topicstarter
Hmm, oke. De clue was dus het gebruik van split. Ik heb nu
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html><head></head><body>
<script language=javascript>

function heelmoeilijk() {
    var url = document.URL // || window.location.pathname
    var url_array = url.split('\\')

    if(url_array[url_array.length-1] == url_array[url_array.length-1].split('/'))
        document.write(url_array[url_array.length-1]);
    else
    {
        url_array = url.split("/")
        document.write(url_array[url_array.length-1])
    }
}
heelmoeilijk()
</script>
</body>
</html>
en dit geeft inderdaad in zowel IE als Moz 'test.html'. IE neemt de if en Moz de else :+..

Verwijderd

Misschien is dit handiger?
String.prototype.filenaam=function(){return this.substring(this.lastIndexOf('/')+1,this.length)}

Verwijderd

Topicstarter
Dat geeft wel mooiere code ja:
code:
1
2
var url=window.location.href
document.write(url.substring(url.lastIndexOf('/')+1,url.length))
bijvoorbeeld, geeft het gewenste effect. Als je href gebruikt (ipv window.location.pathname of document.URL) dan heeft de string geen \ in zowel Moz als IE onder windows, dus hoef je daar geen rekening meer mee te houden. Op een linux bak gaat dat misschien mis.