2009-12-27 7 views
0

PHP와 AJAX로 채팅 응용 프로그램을 만들고 있는데, 사용자가 페이지에 1-2 분 이상 있었으면 메시지를 표시하고 싶습니다. 지난 1-2 분 동안 채팅 상자에 아무 것도 입력하지 않았습니다.사용자가 특정 기간 내에 상자에 입력하지 않았 음을 확인하십시오.

나는 야후에서 같은 대화 상자에 메시지를 표시하려면 : 주기적으로 입력 값을 검사하는 기능을 실행 [last message received 2-3 minutes ago]

+0

당신은 무엇을 시도 했습니까? 이 문제를 해결하기 위해 어떤 접근 방식을 생각하고 있습니까? –

+0

지금까지 시도한 것은 무엇입니까? 문제가 어떻게 해결 될 수 있다고 생각하는지, 그리고 어떤 문제가 발생했는지 보여주는 몇 가지 코드를 게시하십시오. 사람들이 당신의 일을 할 것으로 기대하지 마십시오. – Tomalak

답변

3

사용 setInterval을하고 (당신이 검사 이전 시간으로 비교하는 당신을 저장해야합니다).

변경되지 않은 경우 XHR을 사용하여 서버에 알릴 수 있습니다.

+1

setTimeout은 아마도 더 좋을 것입니다. 메시지를받은 후 2 분 이상 동안 텍스트 필드가 비어있을 때만 뭔가를 원하는 것처럼 들리는 것 같습니다. 메시지가 수신 될 때 제한 시간을 설정하고 콜백 할 때 텍스트 상자가 비어 있는지 확인하십시오. –

3

아마 setTimeout을 사용할 것입니다.

새 메시지를 수신 할 때 시간 초과를 설정하십시오. 시간이 만료 된 후에 호출 될 콜백 함수를 만들면 함수가 메시지를 씁니다. 메시지가 수신되면 해당 링크에 설명 된대로 시간 초과가 지워집니다.

확장하려면 사용자가 텍스트 상자를 변경할 때 스크립트에서 어떤 종류의 변수를 설정하고 콜백 함수가 변수를 확인하도록 할 수 있습니다 (새 메시지가 수신되면 지워짐). 그런 식으로 사용자가 메시지를 받고 마음이 바뀌고 삭제하면 메시지가 표시되지 않습니다. 그러나 그것이 당신이 원하는 행동인지 확실하지 않습니다.

메시지를 자주 변경하려는 경우 먼저 메시지를 그리는 setInterval을 사용하고 메시지를받은 후 경과 한 시간을 업데이트하십시오. 시간 제한을 3 분으로 설정 한 다음 setTimeout의 콜백에서 1 분마다 간격을 시작할 수도 있습니다. 새 메시지가 수신되면 간격을 지우고 메시지를 지우고 싶을 수 있습니다. 따라서 대화에 주변에 쌓여있는이 "메시지를받은 지 5 분 전"이라는 의미없는 "메시지를받지 못했습니다."

관련 문제