2012-11-25 5 views
0

언어 선택 (두 언어 링크가 포함 된 간단한 검은 색 오버레이)을위한 하나의 html 페이지가 있습니다.이 페이지는 사용자가 항상/EN을 추가하지 않으면 이동합니다. 또는/CN을 주소에 연결하면 각 링크는 다른 html 파일 인 EN.html 및 CN.html에 연결됩니다. 누구나 쿠키를 만드는 방법을 알고 있으므로 처음으로 누군가가 내 사이트를 방문 할 때 언어 선택 index.html로 정상적으로 가고 언어를 선택하고 선택 사항을 기억할 쿠키를 만든 다음 후속 방문에서 쿠키를 만듭니다. "www.mywebsite.com"을 입력하더라도 index.html을 완전히 건너 뛰고 www.mywebsite.com/EN 또는 www.mywebsite.com/CN으로 바로 가십시오. 나는 기본적으로 JQuery와 쿠키 플러그인으로 귀결 언어 선택을 기억 쿠키를 만드는이 사이트에 대한 자습서를 읽고,이 같은 스크립트 :언어 선택 기억 - 후속 방문시 홈 페이지로 리디렉션

$(function() { 

var url = 'your_url'; 
var en_page = 'en.html'; 
var cn_page = 'cn.html'; 

if ($.cookie('default_page') != null) { 
    if (window.location.href != url + '/' + $.cookie('default_page')) { 
     window.location.href = url + '/' + $.cookie('default_page'); 
    } 
} 

$('#set_en_button').click(function() { 
    $.cookie('default_page', en_page, { expires: 999 }); 
}); 

$('#set_cn_button').click(function() { 
    $.cookie('default_page', cn_page, { expires: 999 }); 
}); 

}); 

하지만이 단지 작품을 생각하면 언어 선택 페이지가 언어 중 하나와 동일한 html 파일입니까? 언어 선택 페이지가 별도의 페이지입니까? 감사합니다. .

+0

별도의 페이지가 3 개있는 경우이 방법이 효과적입니다. 색인 페이지에이 코드를 입력하고 쿠키가 설정되어 있는지 확인합니다. 설정되어 있지 않으면 클릭 한 언어 버튼에 대한 적절한 값을 저장합니다. 다음에 색인 페이지가 쿠키를 확인하면 null이 아니며 페이지는'window.location.href '를 사용하여 사용자를 리디렉션합니다. 코드를 사용하려고 시도 했습니까? – teddybeard

+0

예, 자동 리디렉션을 사용하려고했지만 쿠키가 항상 있기 때문에 다음에 언어 선택으로 돌아가는 링크를 클릭하면 자동으로 홈 페이지로 리디렉션됩니다. 언어를 변경할 수 없습니다. 언어 변경 링크를 클릭하면 어떻게 쿠키를 지울 수 있습니까? – Windbrand

답변

0

두 가지 방법으로이 문제를 해결할 수 있습니다. 보다 안정적이지만 복잡한 방법은 링크를 클릭하여 홈페이지로 돌아갈 때마다 쿠키를 지우는 것입니다. 예 : 때문에

<a href="index.html" class="return-link">Back Home</a> 
<script type="text/javascript"> 
$(function() { 
    $('.return-link').click(function(e) { 
     $.removeCookie('default_page'); 
    }); 
}); 
</script> 

이 솔루션은 적합하지 않습니다 :

  • 당신이 사이트를 통해 홈페이지에 다시 더 많은 링크를 추가로 유지하기 어렵다 더 우아한 해결책이다

홈페이지 코드를 변경하고 document.referrer 속성을 사용하십시오. 이 속성은 현재 페이지에 도착하기 전에 방문한 마지막 페이지를 보유합니다. 이 지식을 사용하여 읽을 코드를 변경할 수 있습니다 :

$(function() { 

var url = 'your_url'; 
var en_page = 'en.html'; 
var cn_page = 'cn.html'; 

// if the last page you visited has the same hostname 
// as the index page, (eg. www.domain.com == www.domain.com) 
// you must be coming from a page on your own site 
// therefore clear the existing cookie 
if (document.referrer.host == document.location.host) { 
    $.removeCookie('default_page'); 
} 

if ($.cookie('default_page') != null) { 
    if (window.location.href != url + '/' + $.cookie('default_page')) { 
     window.location.href = url + '/' + $.cookie('default_page'); 
    } 
} 

$('#set_en_button').click(function() { 
    $.cookie('default_page', en_page, { expires: 999 }); 
}); 

$('#set_cn_button').click(function() { 
    $.cookie('default_page', cn_page, { expires: 999 }); 
}); 

}); 

을이 솔루션은 훨씬 더 확장 성이 있기 때문에 :

  • 당신이 다른 파일을

주를 수정할 필요가 없습니다 : 특정 상황에서 참조 자 필드가 null 일 수 있습니다. 얼마나 신뢰할 수 있는지 연구해야하지만,이 경우 거의 모든 시간 동안 작동해야한다고 생각합니다.

관련 문제