2010-04-14 5 views
15

Je dois arrêter toute la redirection de page par javascript.comment arrêter la redirection de page

J'ai un script qui redirigera la page vers un autre emplacement. Comment puis-je arrêter toute redirection de page sur ma page via jquery ou javascript.

Répondre

1

Si elle est réoriente que par clics de lien, en jQuery vous pouvez le faire:

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

si elle est une redirection de page existante, vous aurez besoin de nous donner plus d'informations sur ce redirect type de c'est , donc nous pouvons aider plus loin.

Hope this vous aide

+1

qui suppose que toutes les ancres sont liées par jQuery. Pour être sûr que vous devez utiliser $ (a) .unbind ('click'), $ (a) .die(), $ (a) .removeAttr ('onClick') – jAndy

+0

En jQuery> = 1.7, vous devez utiliser '. off() 'au lieu de' .unbind() ' – developius

0

AFAIK ce ne sera pas possible, car la redirection de la page peut se produire de plusieurs façons. Il peut cliquer sur une balise d'ancrage, soumettre un formulaire avec une action différente, placer window.location sur une autre page en cliquant sur le bouton et invoquer le code du serveur pour la redirection.

Et vous ne serez pas en mesure de détecter un grand nombre d'entre eux.

2

Si je vous comprends bien, vous devez empêcher les utilisateurs de quitter la page?

Si oui, la réponse de Marcos Placona est une partie de celui-ci - même si tout ce que vous avez réellement besoin est:

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

Vous ne voulez pas les gens aussi à frapper F5 Je devine? Eh bien c'est plus difficile. Prévenir les défauts à la pression des touches, cross-browser est horrible. Mais quelques codes qui fonctionnent dans certains navigateur sont ci-dessous ici:

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; 
     } 
    }); 
} 

Cependant, la question cross-browser peut être en partie résolu avec -

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; 
}; 

espoir que toutes les aides de toute façon. Le dernier morceau de code provient d'une autre question sur ce site here. Rob

+0

Sérieusement, quelqu'un doit voter pour la réponse de Rahul. Il aurait tout aussi bien pu dire «vous ne pouvez pas avoir de texte sur une page, un arrêt complet». – LiverpoolsNumber9

2

Essayez-vous d'arrêter un disjoncteur iframe? Quelque chose comme:

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

Si oui, vous ne pouvez pas.

+1

HTML5 prend en charge les iframes 'sandboxed'. "empêcher le contenu de naviguer dans son contexte de navigation de haut niveau". http://www.w3schools.com/tags/att_iframe_sandbox.asp – kev

38

Vous pouvez arrêter la redirection en procédant comme suit.

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

Vous ne savez pas si tous les navigateurs supportent cela, mais cela devrait faire l'affaire.

+0

Fonctionne parfaitement! Merci – vrunoa

+0

travaillé pour moi. Merci –