2010-04-14 18 views
15

Necesito detener toda la redirección de página a través de javascript.cómo detener la página redirigir

Tengo un script que redirigirá la página a otra ubicación. ¿Cómo puedo detener toda la redirección de páginas en mi página a través de jquery o javascript?

Respuesta

1

Si es sólo redirige a través de clics de enlace, en jQuery se puede hacer esto:

$(".someClass a").unbind('click'); 

si se trata de una redirección página existente, tendrá que darnos algo más de información sobre el tipo de redirección esto es , para que podamos ayudar más.

Hope esto le ayuda a

+1

que supondría que todos los anclajes están sujetos a jQuery. Para estar seguro de que uno debe usar $ (a) .unbind ('clic'), $ (a) .die(), $ (a) .removeAttr ('onClick') – jAndy

+0

En jQuery> = 1.7, debe usar '. off() 'en lugar de' .unbind() ' – developius

0

Aparentemente, este no será posible, ya que la página de redirección puede ocurrir de muchas maneras. Puede hacer clic en una etiqueta delimitadora, puede enviar un formulario con una acción diferente, establecer window.location en otra página al hacer clic en el botón e invocar el código del servidor para redirigirlo.

Y no podrá detectar muchos de estos.

2

Si lo entiendo bien, debe evitar que los usuarios naveguen fuera de la página?

Si es así, la respuesta de Marcos Placona es una parte de ella - a pesar de todo lo que realmente se necesita es:

$("a").click(function(e) { e.preventDefault(); }); 

Es posible que no quieren que la gente presione F5 supongo? Bueno, eso es más difícil. La prevención de los valores predeterminados al presionar una tecla, el navegador cruzado es horrible. Pero un par de códigos que funcionan en un navegador están por debajo aquí:

function disableF5() { // IE 
    document.onkeydown = function() { 
     if (window.event && window.event.keyCode == 116) { // Capture and remap F5 
      window.event.keyCode = 505; 
     } 
     if (window.event && window.event.keyCode == 505) { // New action for F5 
     return false; // Must return false or the browser will refresh anyway 
     } 
    } 
} 
function disableF5v2() { // FIREFOX 
    $(this).keypress(function(e) { 
     if (e.keyCode == 116) { 
      e.preventDefault(); 
    return false; 
     } 
    }); 
} 

Sin embargo, la cuestión de navegadores en parte puede ser resuelto con -

window.onbeforeunload = function(e) { 
    var message = "Your confirmation message goes here.", e = e || window.event; 
    // For IE and Firefox 
if (e) { 
    e.returnValue = message; 
} 
// For Safari 
    return message; 
}; 

la esperanza de que todas las ayudas de todos modos. El último bit de código es de otra pregunta en este sitio here. Rob

+0

En serio, alguien necesita votar por la respuesta de Rahul. También podría haber dicho "no se puede tener texto en una página, punto final". – LiverpoolsNumber9

2

¿Está tratando de detener un interruptor de iframe? Algo como:

<script language="JavaScript" type="text/javascript"> 
<!-- 
function breakout_of_frame() 
{ 
    if (top.location != location) { 
    top.location.href = document.location.href ; 
    } 
} 
--> 
</script> 

Si es así, no puede.

+1

HTML5 admite iframes 'sandboxed'. "evitar que el contenido navegue en su contexto de navegación de nivel superior". http://www.w3schools.com/tags/att_iframe_sandbox.asp – kev

38

Puede detener la redirección haciendo lo siguiente.

<script language="JavaScript" type="text/javascript"> 
    //<![CDATA[ 
     window.onbeforeunload = function(){ 
      return 'Are you sure you want to leave?'; 
     }; 
    //]]> 
</script> 

No estoy seguro si todos los navegadores son compatibles con esto, pero que debería hacer el truco.

+0

¡Funciona perfecto! Gracias – vrunoa

+0

funcionó para mí. Gracias –

Cuestiones relacionadas