2011-09-07 4 views
0

나는 임의의 사이트에 포함 된 js 위젯을 가지고 있습니다.JS : 뒤로 버튼을 잃지 않고 링크를 클릭하는 것을 추적하는 방법

사용자가 링크를 클릭하면 내 서버에보고하고 싶습니다.

내 서버를 호출하려면 서버에보고 된 매개 변수가 들어있는 src로 동적으로 태그를 만듭니다.

onclick 이벤트에서 onclick에서 true를 반환하면 브라우저가 페이지를 변경하기 때문에 서버가 호출을받지 못할 가능성이 있습니다 (이것이 맞습니까?).

서버 호출을 반환 한 후 onclick에서 false를 반환하면 리디렉션을 사용하면 IE와 같은 브라우저가 리디렉션 후 뒤로 버튼을 지원하지 않기 때문에 뒤로 버튼 기능이 손실됩니다.

강력한 방법으로이를 수행하는 방법에 대한 아이디어가 있습니까?

답변

4

아무런 문제가 없습니다. 서버에 AJAX POST (클릭 등록)를 보내는 <a> 요소에 onclick 처리기를 추가하면 서버에 도착하고 페이지는 계속 클릭 링크로 이동하고 뒤로 버튼이 예상대로 작동합니다 . jQuery를에

예 :

$('a').live('click', function() { 
    $.post('/registerclick/', { data: $(this).attr('src') }, function() {}); 
}); 

이 작동하는 이유는, HTML의 클라이언트/서버 모델이 요청이 서버로 전송 될 때,이 취소 될 수 없음을 지정하기 때문이다.

  1. 이벤트 핸들러가 꺼지고 서버에 요청에도
  2. 사용자가
  3. 서버가 요청을 얻는 href 속성에 페이지를 기본 브라우저 동작에 의해 리디렉션됩니다, 전송됩니다 따라서 다음이 적용됩니다 사용자가 완전히 다른 페이지에 있습니다.

브라우저가 세 번째 단계를 인식하지 못합니다. 그러나 그것은 서버에 대해 중요하지 않습니다.

+0

대단한 답변을 보내 주셔서 감사합니다. 이 위젯은 어떤 사이트에서도 작동해야하기 때문에 AJAX/jquery로 작업 할 수 없습니다.

관련 문제