2011-03-19 3 views
3

새 사용자가 가입 한 후 사용자를 홈 페이지로 리디렉션하고 트위터 스타일의 환영 메시지를 표시해야합니다. 처음에는 jquery 쿠키 플러그인을 사용하여 내 메시지를 저장하고 쿠키가있는 경우 리디렉션 된 페이지에 표시하려고했지만 문제는 모든 브라우저에서 작동하지 않는다는 것입니다. Safari의 Firfox는 쿠키를 삭제하지 않으므로 브라우저가 새로 고침 될 때마다 메시지가 계속 표시됩니다. 코드는 다음과 같습니다.페이지 새로 고침 전에 URL에서 쿼리 문자열 제거

if ($.cookie("message")) { 
    TwentyQuestions.Common.ShowMessageBar($.cookie("message"), 7000); 
    $.cookie('message', "any_value", { expires: -10 }) 
} 

그래서 저는 대신 querystring을 사용하기로 결정했으나 이제는 문제가 비슷합니다. 홈 페이지가로드되면 쿼리 문자열이 감지되고 메시지가 표시됩니다. 하지만 URL에서 쿼리 문자열을 제거하여 페이지가 새로 고침 될 때마다 메시지가 표시되지 않도록하려면 어떻게해야합니까?

감사합니다.

답변

1

은 어쩌면 문제는 클라이언트 측에서 모든 일을하려고하는 것입니다. 대신 사용자와 관련된 영구 쿠키를 설정해야합니다. 그런 다음 백엔드에서 처음으로이 사용자에게 홈페이지가 표시되면 환영 메시지가 표시됩니다. 또한 서버 측에서이 사용자에 대해 "처음 사용자"플래그를 지우십시오. 그런 다음 사용자가 다음에이 페이지를 방문하면 메시지가 표시되지 않습니다.

사용자가 웹 사이트를 방문하고 쿠키가 존재하지 않는 경우에도 "처음 사용자 환영"메시지를 표시 할 수 있습니다.

window.location.href = window.location.href.split('?')[0]; 

그것은 작동하지만,이게 당신이 찾고있는 경우, 나는 확실하지 않다 :

+0

클라이언트 메소드가 작동하지 않으면 이것이 나의 최후의 수단이 될 것입니다. @ marcosfromero의 해결책은 저에게 효과가있는 것처럼 보입니다. 고마워 ... – Prabhu

+0

나는이 방법을 사용하여 결국 ... 클라이언트 메서드 중 아무도 모든 브라우저에서 작동하도록 충분하지 않았습니다. – Prabhu

1

querystring을 사용하는 대신 해시를 사용할 수 있습니다.

특수 해시가있는 홈 페이지로 리디렉션하고 입력 할 때 그냥 제거하십시오. 같은

뭔가 :

if(document.location.hash == '<special hash>') { 
    TwentyQuestions.Common.ShowMessageBar(...); 
    document.location.hash=''; 
} 
+0

이 작동하지만 document.location.has 뒤에 '#'뒤에 꼬리표가 있습니다.해시 단어 자체 만 제거됩니다. 기능적으로는 괜찮지 만 URL에서 URL을 제거 할 수 있습니까? – Prabhu

+0

그렇게 생각하지 마십시오. 나는 결코 할 수 없었다. – marcosfromero

5

당신은 할 수 있나요? 물론

+0

감사합니다. 이 방법이 효과적 일지 모르지만 지금은 다른 리디렉션을 실제로하고 싶지 않습니다. – Prabhu

+0

'검색 설정 지우기'유형 링크 또는 버튼이있는 경우 효과적입니다. 감사합니다 카일 – trevorc

0
location = location.pathname + location.hash 

이 의지는 POST 데이터가 손실,하지만 당신은 쿼리 문자열을 가지고 있다면, 그들은 아마 어쨌든 GET을 통해 사이트에 도착했다.

위치에 쿼리 구성 요소가없는 경우 아무런 효과가 없습니다.

0

쿠키를 사용하여이를 수행 할 수 있지만 쿠키를 올바르게 삭제해야합니다. 과거에 만료일을 설정 한 것은 일부 브라우저에서는 작동하지만 다른 브라우저에서는 발견되지 않았기 때문에 jQuery 쿠키 플러그인으로 쿠키를 삭제하는 올바른 방법은 null으로 전송하는 것입니다.

@example의 $의 .cookie ('the_cookie', NULL); 다음 fine manual에서
@desc null을 값으로 전달하여 쿠키를 삭제합니다. 쿠키가 설정되었을 때 사용한 것과 동일한 경로와 도메인을 사용해야한다는 점에 유의하십시오.

$.cookie('message', null); 

및 쿠키 접근 방법은 잘 작동합니다 :

그래서 그것을 삭제합니다.

+0

고마워요 @ 뮤. 이것은 내가 먼저 시도한 것이지만 Chrome에서 삭제하지 않는 것 같습니다. – Prabhu