Question Comment puis-je rediriger vers une autre page Web?


Comment puis-je rediriger l'utilisateur d'une page à l'autre en utilisant jQuery ou JavaScript pur?


7738
2018-02-02 12:54


origine


Réponses:


On ne redirige pas simplement en utilisant jQuery

jQuery n'est pas nécessaire, et window.location.replace(...) simulera au mieux une redirection HTTP.

window.location.replace(...) est mieux que d'utiliser window.location.href, car replace() ne conserve pas la page d'origine dans l'historique de la session, ce qui signifie que l'utilisateur ne sera pas bloqué dans un fiasco de bouton-poussoir interminable.

Si vous voulez simuler quelqu'un en cliquant sur un lien, utilisez    location.href

Si vous voulez simuler une redirection HTTP, utilisez location.replace

Par exemple:

// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");

// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";

12915
2018-02-03 04:24



ATTENTION: Cette réponse a simplement été fournie comme une solution possible; C'est évidemment ne pas la meilleure solution, car elle nécessite jQuery. Au lieu de cela, préférez la solution JavaScript pure.

$(location).attr('href', 'http://stackoverflow.com')

1472
2017-10-28 16:35



Manière JavaScript "vanilla" standard pour rediriger une page:

window.location.href = 'newPage.html';


Si vous êtes ici parce que vous êtes perdant HTTP_REFERER lors de la redirection, continuez à lire:


La section suivante est pour ceux qui utilisent HTTP_REFERER comme l'une des nombreuses mesures sûres (bien que ce ne soit pas une grande mesure de protection). Si vous utilisez Internet Explorer 8 ou inférieur, ces variables sont perdues lors de l'utilisation de n'importe quelle forme de redirection de page JavaScript (location.href, etc.).

Ci-dessous, nous allons mettre en œuvre une alternative pour IE8 et inférieur afin que nous ne perdions pas HTTP_REFERER. Sinon, vous pouvez presque toujours utiliser simplement window.location.href.

Tests contre HTTP_REFERER (URL de collage, session, etc.) pouvez être utile pour dire si une demande est légitime. (Remarque: il y a aussi des moyens de contourner / usurper ces referrers, comme indiqué par le lien de droop dans les commentaires)


Solution simple de test cross-browser (fallback à window.location.href pour Internet Explorer 9+ et tous les autres navigateurs)

Usage: redirect('anotherpage.aspx');

function redirect (url) {
    var ua        = navigator.userAgent.toLowerCase(),
        isIE      = ua.indexOf('msie') !== -1,
        version   = parseInt(ua.substr(4, 2), 10);

    // Internet Explorer 8 and lower
    if (isIE && version < 9) {
        var link = document.createElement('a');
        link.href = url;
        document.body.appendChild(link);
        link.click();
    }

    // All other browsers can use the standard window.location.href (they don't lose HTTP_REFERER like Internet Explorer 8 & lower does)
    else { 
        window.location.href = url; 
    }
}

508
2017-07-27 14:41



Utilisation:

// window.location
window.location.replace('http://www.example.com')
window.location.assign('http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/path'

// window.history
window.history.back()
window.history.go(-1)

// window.navigate; ONLY for old versions of Internet Explorer
window.navigate('top.jsp')


// Probably no bueno
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';

// jQuery
$(location).attr('href','http://www.example.com')
$(window).attr('location','http://www.example.com')
$(location).prop('href', 'http://www.example.com')

349
2018-01-28 04:28



Cela fonctionne pour tous les navigateurs:

window.location.href = 'your_url';

269
2017-10-22 23:45



Cela aiderait si vous étiez un peu plus descriptif dans ce que vous essayez de faire. Si vous essayez de générer des données paginées, il existe certaines options dans la façon de procéder. Vous pouvez générer des liens séparés pour chaque page à laquelle vous voulez accéder directement.

<a href='/path-to-page?page=1' class='pager-link'>1</a>
<a href='/path-to-page?page=2' class='pager-link'>2</a>
<span class='pager-link current-page'>3</a>
...

Notez que la page en cours dans l'exemple est traitée différemment dans le code et avec CSS.

Si vous voulez que les données paginées soient modifiées via AJAX, c'est ici que jQuery viendrait. Ce que vous feriez serait d'ajouter un gestionnaire de clic à chacune des balises d'ancrage correspondant à une page différente. Ce gestionnaire de clics appelle un code jQuery qui va et récupère la page suivante via AJAX et met à jour la table avec les nouvelles données. L'exemple ci-dessous suppose que vous disposez d'un service Web qui renvoie les nouvelles données de page.

$(document).ready( function() {
    $('a.pager-link').click( function() {
        var page = $(this).attr('href').split(/\?/)[1];
        $.ajax({
            type: 'POST',
            url: '/path-to-service',
            data: page,
            success: function(content) {
               $('#myTable').html(content);  // replace
            }
        });
        return false; // to stop link
    });
});

253
2018-02-02 13:18



je pense aussi que location.replace(URL) est le meilleur moyen, mais si vous voulez informer les moteurs de recherche de votre redirection (ils n'analysent pas le code JavaScript pour voir la redirection), vous devez ajouter le rel="canonical" meta tag sur votre site web.

L'ajout d'une section Noscript avec une méta-balise d'actualisation HTML est également une bonne solution. Je vous suggère d'utiliser cette Outil de redirection JavaScript pour créer des redirections. Il a également la prise en charge d'Internet Explorer pour transmettre le référent HTTP.

Exemple de code sans délai ressemble à ceci:

<!-- Place this snippet right after opening the head tag to make it work properly -->

<!-- This code is licensed under GNU GPL v3 -->
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited -->
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ -->

<!-- REDIRECTING STARTS -->
<link rel="canonical" href="https://yourdomain.com/"/>
<noscript>
    <meta http-equiv="refresh" content="0;URL=https://yourdomain.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
    var url = "https://yourdomain.com/";
    if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer
    {
        document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.
        var referLink = document.createElement("a");
        referLink.href = url;
        document.body.appendChild(referLink);
        referLink.click();
    }
    else { window.location.replace(url); } // All other browsers
</script>
<!-- Credit goes to http://insider.zone/ -->
<!-- REDIRECTING ENDS -->

215
2018-04-25 10:12



Mais si quelqu'un veut revenir à la page d'accueil, il peut utiliser l'extrait suivant.

window.location = window.location.host

Il serait utile si vous avez trois environnements différents comme développement, mise en scène et production.

Vous pouvez explorer cette fenêtre ou l'objet window.location en plaçant simplement ces mots dans la console Chrome ou PyromaneLa console


191
2017-10-30 12:15