Вопрос: Как перенаправить на другую веб-страницу?


Как я могу перенаправить пользователя с одной страницы на другую с помощью jQuery или чистого JavaScript?


7739


источник


Ответы:


Один из них не просто перенаправляется с помощью jQuery

jQuery не требуется, и window.location.replace(...)лучше всего имитировать перенаправление HTTP.

window.location.replace(...)лучше, чем использование window.location.href, потому как replace()не сохраняет исходную страницу в истории сеансов, то есть пользователь не зациклится на бесконечном фиаско.

Если вы хотите имитировать кого-то, нажав на ссылку, используйте location.href

Если вы хотите имитировать перенаправление HTTP, используйте location.replace

Например:

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

12731



ПРЕДУПРЕЖДЕНИЕ: Этот ответ был просто предоставлен в качестве возможного решения; это очевидно не лучшее решение, поскольку для этого требуется jQuery. Вместо этого предпочитайте чистое решение JavaScript.

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

1439



Стандартный «ванильный» способ JavaScript для перенаправления страницы:

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


Если вы здесь, потому что вы проигрыш HTTP_REFERER при перенаправлении, продолжайте чтение:


Следующий раздел предназначен для тех, кто использует HTTP_REFERERкак одна из многих безопасных мер (хотя это не является большой защитной мерой). Если вы используете Internet Explorer 8 или ниже, эти переменные теряются при использовании любой формы перенаправления страницы JavaScript (location.href и т. д.).

Ниже мы собираемся реализовать альтернативу для IE8 и ниже так что мы не теряем HTTP_REFERER. В противном случае вы почти всегда можете просто использовать window.location.href,

Тестирование против HTTP_REFERER(Склейка URL, сеанс и т. Д.) Можно быть полезными при определении того, является ли запрос законным. ( Заметка: есть также способы обхода / обмана этих рефереров, как отмечено ссылкой droop в комментариях)


Простое решение для кросс-браузерного тестирования (откат к window.location.href для Internet Explorer 9+ и всех других браузеров)

Применение: 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; 
    }
}

498



Использование:

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

342



Это работает для каждого браузера:

window.location.href = 'your_url';

261



It would help if you were a little more descriptive in what you are trying to do. If you are trying to generate paged data, there are some options in how you do this. You can generate separate links for each page that you want to be able to get directly to.

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

Note that the current page in the example is handled differently in the code and with CSS.

If you want the paged data to be changed via AJAX, this is where jQuery would come in. What you would do is add a click handler to each of the anchor tags corresponding to a different page. This click handler would invoke some jQuery code that goes and fetches the next page via AJAX and updates the table with the new data. The example below assumes that you have a web service that returns the new page data.

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

246



I also think that location.replace(URL) is the best way, but if you want to notify the search engines about your redirection (they don't analyze JavaScript code to see the redirection) you should add the rel="canonical" meta tag to your website.

Adding a noscript section with a HTML refresh meta tag in it, is also a good solution. I suggest you to use this JavaScript redirection tool to create redirections. It also has Internet Explorer support to pass the HTTP referrer.

Sample code without delay looks like this:

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

204



But if someone wants to redirect back to home page then he may use the following snippet.

window.location = window.location.host

It would be helpful if you have three different environments as development, staging, and production.

You can explore this window or window.location object by just putting these words in Chrome Console or Firebug's Console.


182