javascript - 접속 - 자바스크립트 리다이렉트



다른 웹 페이지로 리디렉션하려면 어떻게해야합니까? (20)

경고 : 이 대답은 가능한 해결책으로 제공되었을뿐입니다. 그것은 jQuery를 필요로하기 때문에 분명히 최선의 해결책은 아닙니다 . 대신 순수한 JavaScript 솔루션을 선호하십시오.

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

jQuery 또는 순수한 JavaScript를 사용하여 한 페이지에서 다른 페이지로 사용자를 리디렉션 할 수 있습니까?


Answer #1

페이지를 리디렉션하는 표준 "바닐라"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의 링크에서 알 수 있듯이이 참조자를 처리 / 스푸핑 할 수있는 방법도 있습니다.)

간단한 크로스 브라우저 테스트 솔루션 (Internet Explorer 9 이상 및 다른 모든 브라우저의 window.location.href 대체)

사용법 : 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; 
    }
}

Answer #2

jQuery를 사용하여 단순히 리다이렉트하지 않는다.

jQuery는 필요하지 않으며 window.location.replace(...) 는 HTTP 리디렉션을 가장 잘 시뮬레이트합니다.

replace() 가 세션 기록에 원래 페이지를 유지하지 않으므로 window.location.replace(...)window.location.href 사용하는 것보다 낫습니다. 즉, 사용자가 끝이없는 백 - 버튼 대 실패.

누군가 링크를 클릭하여 시뮬레이션하려면 location.href 사용하십시오.

HTTP 리디렉션을 시뮬레이트하려면 location.replace 사용하십시오.

예 :

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

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

Answer #3

***** 원래의 질문은 - "JQUERY 사용법을 재조정하는 방법"이었고, 대답은 JQUERY를 구현 함 >> 비준 사용 사례 *****

자바 스크립트가있는 페이지로 리디렉션하는 방법은 다음과 같습니다.

  window.location.href = "/contact/";

또는 지연이 필요한 경우 :

setTimeout(function () {
  window.location.href = "/contact/";
}, 2000);   // Time in milliseconds

jQuery를 사용하면 웹 페이지에서 요소를 쉽게 선택할 수 있습니다. 페이지에서 원하는 항목을 찾은 다음 jQuery를 사용하여 특수 효과를 추가하거나, 사용자 동작에 반응하거나, 선택한 요소의 내부 또는 외부에있는 내용을 표시하거나 숨길 수 있습니다. 이 모든 작업 은 요소 나 이벤트를 선택하는 방법부터 시작합니다.

     $('a,img').on('click',function(e){
         e.preventDefault();
         $(this).animate({
             opacity: 0 //Put some CSS animation here
         }, 500);
         setTimeout(function(){
           // OK, finished jQuery staff, let's go redirect
           window.location.href = "/contact/";
         },500);
     });

누군가 10000 줄의 코드 인 스크립트 / 플러그인을 작성했다고 상상해보십시오! 자, jQuery를 사용하면 한 줄 또는 두 줄만으로이 코드에 연결할 수 있습니다.


Answer #4

JavaScript와 jQuery에서 다음 코드를 사용하여 한 페이지를 다른 페이지로 리디렉션 할 수 있습니다.

window.location.href="http://google.com";
window.location.replace("page1.html");

Answer #5

jQuery는 필요하지 않습니다. 당신은 이것을 할 수 있습니다 :

window.open("URL","_self","","")

그것은 쉽다!

HTTP 요청을 시작하는 가장 좋은 방법은 document.loacation.href.replace('URL') 입니다.


Answer #6

그러나 누군가 홈 페이지로 다시 리디렉션하려는 경우 다음 스 니펫을 사용할 수 있습니다.

window.location = window.location.host

개발, 스테이징 및 프로덕션과 같은 세 가지 환경이 있다면 도움이됩니다.

Chrome 콘솔이나 Firebug 콘솔에이 단어를 넣어서이 창이나 window.location 객체를 탐색 할 수 있습니다.


Answer #7

기본적으로 jQuery자바 스크립트 프레임 워크 일 뿐이므로 리디렉션 과 같은 작업을 수행 할 때는 순수한 JavaScript 만 사용할 수 있으므로이 경우 바닐라 JavaScript를 사용하는 3 가지 옵션이 있습니다.

1) 위치 대체를 사용하면 페이지의 현재 기록을 대체하므로 뒤로 버튼을 사용하여 원래 페이지로 돌아갈 수 없음을 의미합니다.

window.location.replace("http://.com");

2) 위치 지정 기능을 사용하면 기록을 보관할 수 있으며 뒤로 버튼을 사용하면 원래 페이지로 돌아갈 수 있습니다.

window.location.assign("http://.com");

3) 이전 방법 중 하나를 사용하는 것이 좋지만이 방법은 순수 JavaScript를 사용하는 세 번째 옵션 일 수 있습니다.

window.location.href="http://.com";

또한 jQuery에서이 함수를 처리 할 수는 있지만 단 한 줄의 JavaScript 함수이기 때문에 권장하지는 않습니다. 이미 window.location.replace("http://.com"); 와 같이 창 범위에있는 경우 위의 모든 함수를 창없이 사용할 수도 있습니다. window.location.replace("http://.com"); location.replace("http://.com"); 수 있습니다 location.replace("http://.com");

또한 나는 아래 이미지에서 그들 모두를 보여줍니다 :


Answer #8

다음과 같이 jQuery에서 리디렉션 할 수 있습니다.

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

Answer #9

다음은 시간 지연 방향 전환입니다. 지연 시간을 원하는대로 설정할 수 있습니다.

<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Your Document Title</title>
    <script type="text/javascript">
        function delayer(delay) {
            onLoad = setTimeout('window.location.href = "http://www.google.com/"', delay);
        }
    </script>
</head>

<body>
    <script>
        delayer(8000)
    </script>
    <div>You will be redirected in 8 seconds!</div>
</body>

</html>

Answer #10

또한 location.replace(URL) 가 가장 좋은 방법이라고 생각하지만 리디렉션에 대해 검색 엔진에 알리고 싶으면 (리디렉션을 보려면 JavaScript 코드를 분석하지 않음) rel="canonical" 메타를 추가해야합니다 태그를 웹 사이트에 추가하십시오.

HTML 새로 고침 메타 태그가있는 noscript 섹션을 추가하는 것도 좋은 해결책입니다. 이 자바 스크립트 리디렉션 도구 를 사용하여 리디렉션을 만드는 것이 좋습니다. 또한 Internet Explorer에서 HTTP 리퍼러를 전달할 수 있습니다.

지연없이 샘플 코드는 다음과 같습니다.

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

Answer #11

먼저 올바르게 작성하십시오. 다른 링크를 위해 응용 프로그램 내에서 다른 링크를 탐색하려고합니다. 다음은 코드입니다.

window.location.href = "http://www.google.com";

원하는 경우 응용 프로그램 내에서 페이지를 탐색하려는 경우 코드가 있습니다.


Answer #12

용도:

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


Answer #14

이것은 jQuery와 작동합니다 :

$(window).attr("location", "http://google.fr");

Answer #15

이를 수행하는 세 가지 주요 방법이 있습니다.

window.location.href='blaah.com';
window.location.assign('blaah.com');

과...

window.location.replace('blaah.com');

마지막 리디렉션은 검색 기록에서 리디렉션되기 전에 방문한 페이지를 저장하지 않기 때문에 일반적인 리디렉션의 경우 가장 좋습니다. 그러나 JavaScript로 탭을 열려면 위의 방법 중 하나를 사용하면됩니다. 1

편집 : window 접두사는 선택 사항입니다.


Answer #16

자신이하려는 일에 대해 조금 더 설명력이 있다면 도움이 될 것입니다. 페이징 된 데이터를 생성하려는 경우이를 수행하는 방법에 몇 가지 옵션이 있습니다. 직접 가져올 수있는 각 페이지마다 별도의 링크를 생성 할 수 있습니다.

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

예제의 현재 페이지는 코드와 CSS에서 다르게 처리됩니다.

페이징 된 데이터를 AJAX를 통해 변경하려면 jQuery가 들어갈 곳을 선택하십시오. 다른 페이지에 해당하는 각 앵커 태그에 클릭 핸들러를 추가하면됩니다. 이 클릭 핸들러는 AJAX를 통해 다음 페이지를 가져 와서 새로운 데이터로 테이블을 업데이트하는 jQuery 코드를 호출한다. 아래 예제에서는 새 페이지 데이터를 반환하는 웹 서비스가 있다고 가정합니다.

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

Answer #17

클릭 기능에서 다음을 추가하십시오.

window.location.href = "The URL where you want to redirect";
$('#id').click(function(){
    window.location.href = "http://www.google.com";
});

Answer #18

# jQuery / JavaScript를 사용한 HTML 페이지 리디렉션

다음 예제 코드를 시도해보십시오.

function YourJavaScriptFunction()
{
    var i = $('#login').val();
    if (i == 'login')
        window.location = "login.php";
    else
        window.location = "Logout.php";
}

window.location = "www.google.co.in"; 으로 전체 URL을 제공하려는 경우 window.location = "www.google.co.in"; .


Answer #19

시작하기 전에 jQuery는 DOM 조작에 사용되는 JavaScript 라이브러리입니다. 따라서 페이지 리디렉션에 jQuery를 사용해서는 안됩니다.

Jquery.com의 견적 :

jQuery는 이전 버전의 브라우저에서는 주요 문제없이 실행될 수 있지만 jQuery를 적극적으로 테스트하지는 않으며 일반적으로 버그를 수정하지 않습니다.

그것은 여기에서 찾아 냈다 : https://jquery.com/browser-support/

따라서 jQuery는 이전 버전과의 호환성을위한 최종 해결책은 아닙니다.

원시 자바 스크립트를 사용하는 다음 솔루션은 모든 브라우저에서 작동하며 장시간 표준으로 사용되므로 크로스 브라우저 지원을 위해 라이브러리가 필요하지 않습니다.

이 페이지는 3000 밀리 초 후에 google.com 리디렉션됩니다.

<!DOCTYPE html>
<html>
    <head>
        <title>example</title>
    </head>
    <body>
        <p>You will be redirected to google shortly.</p>
        <script>
            setTimeout(function(){
                window.location.href="http://www.google.com"; // The URL that will be redirected too.
            }, 3000); // The bigger the number the longer the delay.
        </script>
    </body>
</html>

다른 옵션은 다음과 같습니다.

window.location.href="url"; // Simulates normal navigation to a new page
window.location.replace("url"); // Removes current URL from history and replaces it with a new URL
window.location.assign("url"); // Adds new URL to the history stack and redirects to the new URL

window.history.back(); // Simulates a back button click
window.history.go(-1); // Simulates a back button click
window.history.back(-1); // Simulates a back button click
window.navigate("page.html"); // Same as window.location="url"

바꾸기를 사용할 때, 뒤로 버튼은 마치 역사에 없었던 것처럼 리디렉션 페이지로 돌아 가지 않습니다. 사용자가 리디렉션 페이지로 돌아갈 수 있도록하려면 window.location.href 또는 window.location.assign 을 사용하십시오. 사용자가 리디렉션 페이지로 돌아갈 수있는 옵션을 사용하는 경우 리디렉션 페이지를 열면 다시 리디렉션됩니다. 따라서 리디렉션 옵션을 선택할 때이를 고려해야합니다. 사용자가 작업을 완료했을 때만 페이지가 리디렉션되는 조건에서 뒤로 버튼 기록에 페이지가 있으면 괜찮습니다. 그러나 페이지가 자동으로 리디렉션되면 리디렉션을 사용해야하므로 사용자가 리디렉션이 보내는 페이지로 다시 돌아 가지 않고 뒤로 버튼을 사용할 수 있습니다.

메타 데이터를 사용하여 페이지 리디렉션을 수행 할 수도 있습니다.

메타 새로 고침

<meta http-equiv="refresh" content="0;url=http://evil.com/" />

메타 위치

<meta http-equiv="location" content="URL=http://evil.com" />

기본 도용

<base href="http://evil.com/" />

의심하지 않는 클라이언트를 원치 않는 페이지로 리디렉션하는 더 많은 방법은이 페이지에서 찾을 수 있습니다 (그 중 하나는 jQuery에 의존하지 않습니다).

https://code.google.com/p/html5security/wiki/RedirectionMethods

나는 사람들이 무작위로 방향을 바꾸는 것을 싫어한다는 점을 지적하고자한다. 절대적으로 필요한 경우에만 사용자를 리디렉션하십시오. 사람들을 무작위로 리디렉션하기 시작하면 다시 사이트로 이동하지 않습니다.

다음 부분은 가정입니다.

악성 사이트로 신고 될 수도 있습니다. 그런 다음 사람들이 사이트 링크를 클릭하면 사용자 브라우저가 귀하의 사이트가 악의적이라고 경고 할 수 있습니다. 사람들이 귀하의 사이트에서 나쁜 경험을보고하는 경우 검색 엔진이 귀하의 평점을 떨어 뜨릴 수도 있습니다.

리디렉션에 대한 Google 웹 마스터 가이드 라인 ( https://support.google.com/webmasters/answer/2721217?hl=en&ref_topic=6001971 검토 https://support.google.com/webmasters/answer/2721217?hl=en&ref_topic=6001971

여기에 재미있는 작은 페이지가 있습니다.

<!DOCTYPE html>
<html>
    <head>
        <title>Go Away</title>
    </head>
    <body>
        <h1>Go Away</h1>
        <script>
            setTimeout(function(){
                window.history.back();
            }, 3000);
        </script>
    </body>
</html>

두 페이지 예제를 함께 사용하면 재 라우팅의 유아 반복이 생겨 사용자가 사이트를 다시 사용하지 않을 것입니다.





redirect