2011-01-27 69 views
43

Necesito redirigir al usuario mediante JavaScript. ¿Cuál es el método preferido?window.open target _self v window.location.href?

window.open("webpage.htm", "_self"); 

o

window.location.href = "webpage.htm"; 
+0

¿No es el primero que abre una nueva ventana? No estoy seguro en realidad. –

+0

@Gunner, No, lo abrirá en la misma ventana, de ahí el '" _self "' allí ... –

+0

si reemplaza _self con _blank, se abrirá en una nueva ventana – DOK

Respuesta

53

Definitivamente se prefiere el segundo método, ya que no tiene la sobrecarga de otra función de invocación:

window.location.href = "webpage.htm"; 
+1

Jacob proporcionó una explicación mejor que O W Frédéric Hamidi también agregó a la respuesta, y me gustaría otorgarles la respuesta a ambos, pero parece que debo elegir una. Como Jacob respondió primero, la respuesta va para ti. – Junto

+0

Vale la pena señalar que al usar este método, no se puede usar un enlace como '../../ folder/page.aspx? Source = abcd'. Necesitaba usar el otro método para hacer que mi enlace funcionara y aun así no podía usar "_self" con él. – Christine268

+1

Sobrecarga de invocación de función? Las llamadas a funciones tienen un costo, pero no estoy seguro de si eso tiene alguna relevancia, por una vez espero que las llamadas a funciones hoy en día sean tan eficientes como el acceso a la propiedad para todos los propósitos prácticos. En JVM es, con los saltos de rendimiento que V8 ha hecho, espero lo mismo aquí. ¿Hay algún problema con mi análisis aquí? – faizan

3
window.location.href = "webpage.htm"; 
19

Como otros han dicho, el segundo enfoque es generalmente preferido.

Sin embargo, los dos fragmentos de código no son exactamente equivalentes: el primero realmente establece window.opener en el objeto de ventana, mientras que el segundo lo dejará como está, al menos bajo Firefox.

3

Puede omitir window y simplemente usar location.href. Por ejemplo:

location.href = 'http://google.im/'; 
17

Esperemos que alguien más se guarde al leer esto.

Nos encontramos con un problema con los navegadores basados ​​en webkit haciendo:

window.open("webpage.htm", "_self"); 

El navegador le bloqueará y morir si teníamos demasiados nodos DOM. Cuando cambiamos nuestro código para seguir la respuesta aceptada de:

location.href = "webpage.html"; 

todo estaba bien. Nos tomó un tiempo averiguar qué causaba el problema, ya que no era obvio qué hacía que nuestra página no se cargara periódicamente.

0

Utilice este

window.open("url","_self"); 
  • El primer parámetro "url" es ruta completa de la página que desea abrir.
  • El segundo parámetro "_self", se usa para abrir la página en la misma pestaña. Si desea abrir la página en otra pestaña, utilice "_blank".
+1

Esta respuesta se opone directamente a la respuesta sugerida y puede hacer que los navegadores fallen. Ver mi respuesta en este hilo. Además, esto no dice por qué uno elegiría usar este método, solo dice usarlo. –