2012-06-08 22 views
6

a continuación está mi código funcionando bien en cromo.firefox javascript return false en href redirige el navegador y muestra el falso

<body> 

<a href="javascript: sam.save();">hehe</a> 

<script> 

var sam = { 
    save : function() 
    { 
     alert("here") 
      return false;  
    } 
} 
</script> 

cuando se encuentra en funcionamiento en Firefox la página vuelve a dirigir y falso se visualiza en la pantalla con el contenido de la barra de direcciones como en la imagen

enter image description here

versión 9.0.1 Firefox es

sugerencias y burlas por favor ...

+0

He probado el código, y funciona en la última versión de Firefox. Es 13.0, por lo que está un poco atrás ... – Guffa

+0

después de hacer clic en el enlace en el código que redirige a como en la captura de pantalla –

Respuesta

4

El código que cita no puede producir el comportamiento que observa. El comportamiento observado solo ocurriría si sam.save() devolviera false, mientras que el código entrecomillado devuelve undefined. ¿Cómo se ve tu código completo real?

Editar: La respuesta útil fue en un comentario. Lo puse aquí para que sea más fácil de encontrar.

Oh, me perdí el "return false" después de la alerta. En ese caso, el comportamiento que ve es correcto: si la ejecución de javascript: devuelve un valor distinto de indefinido, ese valor se trata como una cadena de HTML y se procesa. Al menos en la mayoría de los navegadores. - Boris Zbarsky 11 de junio a las 15:25

+0

el código completo es lo que he dado ... como dijiste si hay un retorno falso, entonces el resultado está en la captura de pantalla ... si no hay retorno falso entonces todo funciona bien ... –

+2

Oh, yo se perdió el "retorno falso" después de la alerta. En ese caso, el comportamiento que ve es correcto: si la ejecución de javascript: devuelve un valor distinto de 'undefined', ese valor se trata como una cadena de HTML y se procesa. Al menos en la mayoría de los navegadores. –

5
<a href="#" onclick="sam.save();">hehe</a> 
+0

que había estado usando ... después de algunas discrepancias anteriores, lo hice como en el código. –

6

Por alguna razón devolver falso no funciona en FF dentro de href = "javascript:", pero el vacío (0) lo hace.

<a href="javascript: sam.save();void(0);">hehe</a> 
+0

Esto me salvó algunos dolores de cabeza. Gracias – insaner

2

La sintaxis más compatible debe ser

<a href="javascript:void(0)" onclick="sam.save()">hehe</a> 
+0

La única manera que funcionó para mí. –

0

intentarlo

`<a href="javascript: void(sam.save())">hehe</a>` 

Espero que esto ayude ...

0

Ejemplo de cómo funciona:

Firefox: El segundo y el tercero representan un blanco página

Cromo: El primer caso es la prestación de la página en blanco

<body> 

<a href="javascript: something.with_early_return();">with_early_return</a> 
<a href="javascript: something.with_false();">with_false</a> 
<a href="javascript: something.with_string();">with_string</a> 

<script> 

var something = { 
    with_early_return: function() { 
     alert("with_early_return"); 
     return; 
    }, 

    with_false: function() { 
     alert('with_false'); 
     return false; 
    }, 

    with_string: function() { 
     alert('with_string'); 
     return 'It renders this as text'; 
    } 
} 
</script> 
Cuestiones relacionadas