2010-03-11 15 views
8

¿Podría alguien recomendar una forma de obtener el nombre de la página de una url usando JavaScript?Obtener URL de la página usando javascript

Por ejemplo si tienen:

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

que sólo tiene que conseguir cadena "news.html"

Gracias!

+1

me gusta la solución de TJ – Alex

Respuesta

14

Usted puede hacer esto con bastante facilidad a través de window.location.pathname análisis:

var file, n; 

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

... o como otros han dicho, puede hacerlo con una expresión regular en una sola línea. Una línea algo densa, pero con un comentario sobre ella, debería ser una buena forma de hacerlo.

+2

+1 Estoy impresionado con el poder de la expresión regular, pero no puedo leerlos. –

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

Puede sustituir url con window.location

+0

Como nota, haciendo window.location.replace (/^.*\//, "") .replace (/\?.*$/, ""); te redirigirá – contactmatt

5

Creo que es

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

Así,

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

Creo que necesitas escapar barras hacia adelante allí. :) –

+0

sí, lo tengo, ¡gracias! – Pointy

+0

¡Agradable! ¡Nunca supe sobre 'pathname'! –

0

Es posible que desee encontrar también las rutas de archivos en un disco local, y puede que no desee incluir ninguno de hash o conseguir cuerdas en el camino-

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