2010-03-11 88 views
8

有人可以推薦一種方法從使用JavaScript的URL獲取頁面名稱嗎?使用javascript獲取頁面url

舉例來說,如果我有:

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

我只需要得到 「news.html」 串

謝謝!

+1

我喜歡TJ的解決方案 – Alex

回答

14

您可以通過window.location.pathname解析做到這一點很容易地:

var file, n; 

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

......或者像其他人所說的那樣,你可以在一行中使用正則表達式。一條有點密集的線條,但有一條評論,它應該是一個很好的途徑。

+2

+1我對正則表達式的力量印象深刻,但我無法讀懂它們。 –

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

您可以window.location

+0

作爲一個說明得到的字符串,這樣做window.location.replace(/^.*\//,「」).replace(/\?.*$/,「」);會重定向你。 – contactmatt

5

替代url我認爲這是

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

所以,

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

我認爲你需要在那裏逃避正斜線。 :) –

+0

是的,我明白了 - 謝謝! – Pointy

+0

不錯!我從來不知道'路徑名'! –

0

你可能也想找到文件路徑在本地磁盤上, ,你可能不希望包括任何哈希值或路徑 -

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] || ''; 
}