2010-03-11 16 views
8

Könnte jemand eine Möglichkeit empfehlen, den Seitennamen von einer URL mit JavaScript zu erhalten?Get page url using javascript

Zum Beispiel, wenn ich:

http://www.cnn.com/news/1234/news.html?a=1&b=2&c=3 

Ich muss nur "news.html" string

Dank erhalten!

+1

Ich mag TJ-Lösung – Alex

Antwort

14

Sie dies tun können ziemlich leicht über window.location.pathname-Analyse:

var file, n; 

file = window.location.pathname; 
n = file.lastIndexOf('/'); 
if (n >= 0) { 
    file = file.substring(n + 1); 
} 
alert(file); 

... oder wie andere gesagt haben, können Sie dies mit einem regulären Ausdruck in einer Zeile tun. Eine etwas dicht aussehende Linie, aber mit einem Kommentar darüber, sollte ein guter Weg sein.

+2

+1 Ich bin beeindruckt von der Kraft der Regex, aber ich kann sie nicht lesen. –

3
var url = "http://www.cnn.com/news/1234/news.html?a=1&b=2&c=3"; 
url = url.replace(/^.*\//, "").replace(/\?.*$/, ""); 

können Sie ersetzen url mit window.location

+0

Als Hinweis finden, tun window.location.replace (/^.*\//, "") .replace (/\?.*$/, ""); wird dich umleiten. – contactmatt

5

Ich denke, es ist

window.location.pathname.replace(/^.*\/([^/]*)/, "$1"); 

So

var pageTitle = window.location.pathname.replace(/^.*\/([^/]*)/, "$1"); 
+0

Ich denke, du musst vorwärts Schrägstriche dort entkommen. :) –

+0

ja ich habe es - danke !! – Pointy

+0

Schön! Ich habe nie von 'Pfadname' gewusst! –

0

Vielleicht möchten Sie auch Dateipfade auf einer lokalen Festplatte, und Sie vielleicht nicht wollen, schließen jede Hash oder erhalten Strings in der Weg-

String.prototype.fileName= function(){ 
var f, s= this.split(/[#\?]/, 1)[0].replace(/\\/g,'/'); 
s= s.substring(s.lastIndexOf('/')+ 1); 
f= /^(([^\.]+)(\.\w+)?)/.exec(s) || []; 
return f[1] || ''; 
}