Domanda Come reindirizzare a un'altra pagina Web?


Come posso reindirizzare l'utente da una pagina all'altra utilizzando jQuery o puro JavaScript?


7738
2018-02-02 12:54


origine


risposte:


Uno non semplicemente reindirizza utilizzando jQuery

jQuery non è necessario, e window.location.replace(...) simulerà meglio un reindirizzamento HTTP.

window.location.replace(...) è meglio dell'uso window.location.href, perché replace() non mantiene la pagina di origine nella cronologia della sessione, il che significa che l'utente non si bloccherà in un fiasco back-button senza fine.

Se vuoi simulare qualcuno cliccando su un link, usa    location.href

Se si desidera simulare un reindirizzamento HTTP, utilizzare location.replace

Per esempio:

// 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";

12910
2018-02-03 04:24



AVVERTIMENTO:  Questa risposta è stata semplicemente fornita come una possibile soluzione; é ovvio non  la soluzione migliore, in quanto richiede jQuery. Invece, preferisci la pura soluzione JavaScript.

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

1472
2017-10-28 16:35



Standard JavaScript "vanilla" per reindirizzare una pagina:

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


Se sei qui perché lo sei perdere  HTTP_REFERER durante il reindirizzamento, continua a leggere:


La seguente sezione è per coloro che usano HTTP_REFERER come una delle molte misure di sicurezza (anche se non è una grande misura di protezione). Se stai usando Internet Explorer 8  o inferiore, queste variabili si perdono quando si utilizza qualsiasi forma di reindirizzamento delle pagine JavaScript (location.href, ecc.).

Di seguito stiamo implementando un'alternativa per IE8 e inferiore  in modo da non perdere HTTP_REFERER. Altrimenti puoi quasi sempre semplicemente usare window.location.href.

Test contro HTTP_REFERER (Incollamento di URL, sessione, ecc.) può  essere utile nel dire se una richiesta è legittima. ( Nota:  ci sono anche modi per aggirare / falsificare questi referenti, come notato dal link di droop nei commenti)


Semplice soluzione di test cross-browser (da fallback a window.location.href per Internet Explorer 9+ e tutti gli altri browser)

Uso: 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



Uso:

// 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



Questo funziona per ogni browser:

window.location.href = 'your_url';

269
2017-10-22 23:45



Sarebbe utile se tu fossi un po 'più descrittivo in quello che stai cercando di fare. Se stai cercando di generare dati pagati, ci sono alcune opzioni su come farlo. È possibile generare collegamenti separati per ciascuna pagina a cui si desidera poter accedere direttamente.

<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>
...

Si noti che la pagina corrente nell'esempio è gestita in modo diverso nel codice e con CSS.

Se vuoi che i dati pagati vengano modificati tramite AJAX, è qui che entrerà jQuery. Quello che dovresti fare è aggiungere un gestore di clic a ciascuno dei tag di ancoraggio corrispondenti a una pagina diversa. Questo gestore di clic invoca un codice jQuery che va e recupera la pagina successiva tramite AJAX e aggiorna la tabella con i nuovi dati. Nell'esempio seguente si presuppone che si disponga di un servizio Web che restituisce i dati della nuova pagina.

$(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



La penso così anche io location.replace(URL) è il modo migliore, ma se vuoi notificare ai motori di ricerca il tuo reindirizzamento (non analizzano il codice JavaScript per vedere il reindirizzamento) dovresti aggiungere il rel="canonical" meta tag al tuo sito web.

Aggiungere una sezione noscript con un meta tag di aggiornamento HTML al suo interno è anche una buona soluzione. Ti suggerisco di usare questo Strumento di reindirizzamento JavaScript  per creare reindirizzamenti. Ha anche il supporto di Internet Explorer per passare il referrer HTTP.

Il codice di esempio senza ritardi è simile al seguente:

<!-- 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



Ma se qualcuno vuole reindirizzare nuovamente alla home page, può usare il seguente frammento.

window.location = window.location.host

Sarebbe utile se hai tre diversi ambienti come sviluppo, messa in scena e produzione.

Puoi esplorare questa finestra o l'oggetto window.location semplicemente mettendo queste parole in Chrome Console o Firebug Console.


191
2017-10-30 12:15