2010-12-11 3 views
1

내 시스템의 사용자가 서로 채팅 할 수 있도록 페이스 북 형 채팅 시스템을 만들고 있습니다. 어떤 이유로 새 간격을 확인하기 위해이 간격을 실행할 때 Firefox에서는 제대로 작동하지만 Internet Explorer에서는 제대로 작동하지 않습니다. Internet Explorer에서 마음에 들지 않는 setInterval에 대한 구체적인 내용이 있습니까?Jquery 세트 간격 문제

편집 : IE에서 직면 한 특정 문제는이 setInterval을 통해 새 채팅을로드하는 대신 전혀 발생하지 않습니다. 파이어 폭스에서 잘 작동하며 데이터베이스에 입력 될 때 새로운 채팅을로드합니다. 이 코드의 어느 부분이 오류의 원인인지는 모르지만 setInterval 함수라는 의혹이 있습니다.

아니면 Ajax 요청 빈도가 될 수 있습니까? 보조 노트에

setInterval(function(){ 
     // Load Chats 
    },500); 

: 모든 구간에 나는 아약스 요청이 해당 쿼리가 페이지로드 이후 데이터베이스에 추가 된 새로운 채팅이 있는지 확인하기 위해 데이터베이스의 PHP 파일을로드 데. 그러면 채팅 세션에 대한 새 채팅 창을 설정합니다. 데이터베이스 쿼리를 계속하고 멀린 펄 (mulitpule) 아약스 요청을 실행하는 것은 잘못된 일입니까? 더 좋은 방법이 있습니까?

이것은 내가 뭐하는 거지의 단순화 된 버전 : Internet Explorer가 마음에 들지 않는다고하여 setInterval에 대한 구체적인 아무것도

setInterval(function(){ 
    // Get new DB Entries 
    $.get(url, data,handlerFunction); 

    function handlerFunction(result){ 
    // Load new chats if they exist in the DB 
    } 
},500); 
+0

당신이 설명 할 수 있습니까? – casablanca

+0

수정 됨, 감사합니다. –

답변

3

있습니까?

아니요, 없습니다.

아니면 Ajax 요청 빈도가 될 수 있습니까?

예. 응답 처리기가 다음 요청을 설정하게하고, 돌아 오는 데 걸리는 시간과 상관없이 매 30 초마다 다른 응답을 보냅니다. 동시 요청의 한계에 도달하고 긴 요청을 대기열에 올려 놓습니다.

+0

콜백 함수에서 다음 요청을 설정 하시겠습니까? –

+0

네, 맞습니다. – Quentin

+0

고맙습니다!, 그 일을 어떻게 하죠? 콜백 함수는 Ajax 요청을 처리하는 함수이기 때문에? –

1

이제 내가 말할 수있는 한 가지, "아약스가 타이머를 사용하여 호출하는 경우"setInterval 사용을 피하고 대신 setTimeout을 사용합니다.

예를 들어 int=self.setInterval("clock()",1000);이므로 시계 기능을 즉시 호출하고 clock()이 내부로 들어가는 시간에 관계없이 1 초마다 호출합니다. 다른 측면에서

, var t=setTimeout("clock()",1000); 이것은 clock() 함수를 호출 시작 후 1 초 대기하고 settimeout라고하면 다시는 clock() 마무리 실행까지 대기 한 후 다시 호출합니다.

이에 대한 몇 가지 유용한 링크 : 당신이 IE에 직면하고있는 문제가 무엇
http://www.w3schools.com/jsref/met_win_setinterval.asp
http://www.w3schools.com/js/js_timing.asp
http://zetafleet.com/blog/why-i-consider-setinterval-harmful
http://javascript.about.com/library/blstvsi.htm