2010-05-19 18 views
10

por favor alguien puede ayudar con esto javascript: void (null) lo encontré utiliza en botones de enlace de la siguiente maneraAyúdame a entender javascript: void (null)

<a onclick="ProcessResponse()" href="javascript:void(null)" >Accept Data</a> 

Respuesta

5

Básicamente lo que ocurre es la onclick la función ProcessResponse() se llama y el href se establece en javascript:void(null) para desactivar el comportamiento predeterminado del enlace.

mayoría de los desarrolladores simplemente están acostumbrados a escribir esto también:

<a onclick="ProcessResponse(); return false;" href="#" >Accept Data</a> 

Ejemplo:

Supongamos que tenemos este enlace en su lugar:

<a onclick="ProcessResponse(); return false;" href="http://www.google.com" >Accept Data</a> 

Tenga en cuenta que href se establece en www.google.com pero cuando haga clic en ese enlace, simplemente llamaría alFuncióny no irá a www.google.com porque el return false puesto después de ProcessResponse() desactiva el comportamiento predeterminado del enlace que va a www.google.com. Lo mismo es el caso para el enlace que ha publicado.

+4

Esto es técnicamente incorrecto. No "desactiva el comportamiento predeterminado del enlace", es más como tener un enlace vacío. Prueba solo 'javascript:' o 'javascript: undefined'. –

+0

No se debe olvidar el prefijo "http: //" en href. –

+2

@Andy E: estoy hablando de href establecido en #. – Sarfraz

4

javascript:void(null) = No hacer nada.

Observe que hay una llamada de javascript en el controlador de eventos onclick; eso hace algo (supongo que acepta datos procesando la respuesta;).

14

void es un operador de JavaScript, pero a veces se confunde con una función debido al uso común de los corchetes que lo siguen. El propósito previsto de void es evaluar una expresión sin devolver un valor. Por lo tanto, cualquier expresión en absoluto puede ser void ed, no tiene que ser null y muy a menudo se ve void(0) o con menos frecuencia, void 0.

Cuando utiliza javascript: en un atributo href, se evaluará la expresión siguiente y se devolverá su resultado. Esto se puede ver mediante la introducción de la siguiente en la barra de direcciones del navegador:

javascript:prompt("test"); 

Tipo nada en el cuadro que aparece y pulse ENTER/clic en Aceptar. Notarás que la página desaparecerá y aparecerá lo que escribiste. Ahora observen lo que sucede si añadimos void 0;:

javascript:prompt("test"); void 0; 

Después de hacer clic en OK en el indicador, no pasa nada. Ese es el manual de void 0, devuelve undefined y el navegador no hace nada al respecto. Esto también se aplica a href en los enlaces (no dude en probarlo). Todo el asunto podría incluso escribirse como javascript:void prompt("test");.

Como otros han mencionado, lo mejor es utilizar return false; desde un controlador de eventos en lugar de utilizar void en el href. De hecho, se recomienda no utilizar javascript: en el atributo href.

1

Agregar void(0) a las instrucciones de Javascript es un truco común cuando se utiliza una pseudo-URL javascript: para ejecutar el código. Si omite hacer esto y la secuencia de comandos devuelve algo distinto de undefined, se tratará como si se pasara a document.write, es decir, el navegador se desplazará a una página vacía.

Existen aplicaciones válidas para este truco (a saber, los marcadores siempre deben terminar así), pero en el ejemplo que usted dio es simplemente incorrecto, por razones ya explicadas por otros.

Cuestiones relacionadas