Pregunta ¿Cómo puedo redireccionar a otra página web?


¿Cómo puedo redirigir al usuario de una página a otra usando jQuery o JavaScript puro?


7738
2018-02-02 12:54


origen


Respuestas:


Uno no simplemente redirige usando jQuery

jQuery no es necesario, y window.location.replace(...) Simulará mejor una redirección HTTP.

window.location.replace(...) es mejor que usar window.location.href, porque replace() no mantiene la página de origen en el historial de la sesión, lo que significa que el usuario no se quedará atrapado en un fiasco que nunca termina.

Si quiere simular a alguien haciendo clic en un enlace, use    location.href

Si quiere simular una redirección HTTP, use location.replace

Por ejemplo:

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

12914
2018-02-03 04:24



ADVERTENCIA: Esta respuesta simplemente se ha proporcionado como una posible solución; Es obviamente no la mejor solución, ya que requiere jQuery. En cambio, prefiere la solución de JavaScript puro.

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

1472
2017-10-28 16:35



Forma JavaScript estándar "vainilla" para redirigir una página:

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


Si estás aquí porque eres perdiendo HTTP_REFERER al redireccionar, sigue leyendo:


La siguiente sección es para aquellos que usan HTTP_REFERER como una de muchas medidas seguras (aunque no es una gran medida de protección). Si estás usando Internet Explorer 8 o inferior, estas variables se pierden al usar cualquier forma de redirección de páginas de JavaScript (location.href, etc.).

A continuación vamos a implementar una alternativa para IE8 y más bajo para que no perdamos HTTP_REFERER. De lo contrario, casi siempre puedes simplemente usar window.location.href.

Prueba contra HTTP_REFERER (Pegado de URL, sesión, etc.) poder ser útil para decir si una solicitud es legítima. (Nota: también hay formas de evitar estas referencias, como se señala en los comentarios del enlace de droop)


Solución simple de prueba de varios navegadores (alternativa a window.location.href para Internet Explorer 9+ y todos los demás navegadores)

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



Utilizar:

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



Esto funciona para todos los navegadores:

window.location.href = 'your_url';

269
2017-10-22 23:45



Ayudaría si fueras un poco más descriptivo en lo que intentas hacer. Si intenta generar datos paginados, hay algunas opciones sobre cómo hacerlo. Puede generar enlaces separados para cada página a la que desee acceder directamente.

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

Tenga en cuenta que la página actual en el ejemplo se maneja de manera diferente en el código y con CSS.

Si quiere que los datos paginados se modifiquen a través de AJAX, aquí es donde entrará jQuery. Lo que haría sería agregar un manejador de clics a cada una de las etiquetas de anclaje correspondientes a una página diferente. Este controlador de clic invocaría un código jQuery que iría a la página siguiente a través de AJAX y actualizaría la tabla con los datos nuevos. El siguiente ejemplo supone que tiene un servicio web que devuelve los datos de la nueva página.

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



yo tambien pienso eso location.replace(URL) es la mejor manera, pero si desea notificar a los motores de búsqueda sobre su redireccionamiento (no analizan el código JavaScript para ver la redirección) debe agregar el rel="canonical" metaetiqueta a su sitio web.

Agregar una sección noscript con una metaetiqueta de actualización HTML en él, también es una buena solución. Te sugiero que uses esto Herramienta de redirección de JavaScript para crear redirecciones. También tiene soporte de Internet Explorer para pasar la referencia HTTP.

El código de muestra sin demora se ve así:

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