2011-01-12 27 views
9

que tienen algo así como http://domain.com/Pages/SearchResults.aspx?function=search&selectedserver=intranet&search_query=MyRecords y la necesidad de sustituirlo por JavaScript con algo similar a http://domain.com/Pages/SearchResults.aspx?function=loginsearch&user=admin&password=admin&selectedserver=intranet&search_query=MyRecords - por locómo reemplazar parte de la URL con JavaScript?

function=search 

está siendo sustituido con

function=loginsearch&user=admin&password=admin 

dentro de la URL. Necesito ayuda con qué JavaScript debo guardar como un botón en la barra de herramientas de un navegador para hacer clic y tener la URL en la barra de direcciones reemplazada.

+0

que es un error, ya fijada – user63503

+19

Por favor, dime que no está enviando un nombre de usuario y la contraseña en texto plano. –

Respuesta

9
var url = window.location.toString(); 
window.location = url.replace(/function=search/, 'function=loginsearch&user=admin&password=admin'); 
+0

agregó un botón con el siguiente código: javascript: var url = window.location.toString(); window.location = url.replace (/ function = search /, 'function = loginsearch & user = admin & password = admin'); y funcionó! ¡Muchas gracias! – user63503

+0

no es necesario 'javascript:' antes del código –

+0

@Juan: depende de si está en un atributo 'onclick' o no. –

2
location.href = location.href.replace(
    'function=search&', 'function=loginsearch&user=admin&password=admin&') 
2

Si tienes intención de hacerlo sin actualizar la página, me temo que eso es imposible. Solo puede cambiar la etiqueta hash a través de Javascript, es decir, http://example.com/page/#hashtag, que puede hacer a través del window.location.hash.

ACTUALIZACIÓN (11 ° septiembre de 2011): Ver el HTML5 history API.

0

Puede encontrar útil la biblioteca dedicada URI.js, particularmente los métodos setQuery() y addQuery(). Pegué este trozo de código directamente en la consola en esa página y parece que funciona:

var url = 'http://domain.com/Pages/SearchResults.aspx?function=search&selectedserver=intranet&search_query=MyRecords'; 
var uri = new URI(url); 
var new_params = {'function': 'loginsearch', 'user': 'admin', 'password': 'admin'}; 
uri.setSearch(new_params); 
console.log(uri.toString()); 

http://domain.com/Pages/SearchResults.aspx?function=loginsearch&selectedserver=intranet&search_query=MyRecords&user=admin&password=admin 
<- undefined 
> 

Debe ser fácil de convertir esta lógica en una función (o una sola línea :)). Como un lado, ¿por qué estás pasando las credenciales directamente en la URL?

0
var url    = window.location.href;    
window.location  = url.replace(/function=search/, 'function=loginsearch&user=admin&password=admin'); 
0

La única manera de actualizar la URL que aparece sin recargar la página es history.pushState

window.history.pushState("", "", "/your-new-url"); 
Cuestiones relacionadas