2009-08-13 7 views
2

사람들이 자신의 페이지에 포함 할 수있는 jQuery 플러그인을 만들고 있습니다. 플러그인은 다른 도메인에있는 운영중인 서비스에서 작업을 생성합니다.까다로운 : JSONP 폴링을 위해 Firefox에서 서핑 "Loading ..."제목

도메인 경계를 위반하려면 jQuery의 JSONP 기능을 사용하고 있습니다.이 기능은 작업을 스폰하는 데 적합합니다. 그러나 "진행률"(0 -> 100 %)도 표시해야합니다. 지금까지 나의 계획은 직업의 진전을 지속적으로 "조사"하는 것이 었습니다 (혜성은 더 좋았지 만 AFAIK는 교차 도메인이 아님).

문제는 매 초마다 진행률을 폴링하면 Firefox가 지속적으로 "로드 중 ..."으로 깜박 거리고 심각하게 짜증나게하는 탭 제목 내에 깜박이는 것입니다. (JSONP는 DOM에 첨부 된 스크립트 태그를 통해 작동하기 때문에 파이어 폭스는이를 수행한다).

그래서 내 질문의 고기는 다음과 같습니다

는 것이 가능 surpress하는 것입니다 "로드하는 중 ..."탭 제목 메시지 - 또는 - 더 나은 방법이 인에에 "스트림"진행 상황 업데이트 도메인 간 패션?

-이 완료되면 펠릭스 Geisendörfer이

답변

0

장기간 실행되는 작업 인 경우 평균 실행 시간을 가져 와서 가짜 폴링을 사용하여 위조 된 완료율을 조정하여 사용자에게 위조 할 수 있습니다.

평균 작업 시간이 10 분이라고 가정 해 보겠습니다. 매초마다 평균 퍼센트를 계산하고, 클라이언트 측에서 전체 금액을 가짜로 업데이트 할 수 있습니다.

그런 다음 30 초 타이머가 만료되면 실제 폴링 비율을 얻기 위해 서버를 폴링하고 진행률 막대를 업데이트하여 클라이언트 측 가짜가 서버 작업의 새로운 예상 종료 시간에 완료되도록하십시오 .

평균 성능과 현재 측정 한 시간 사이의 중간 지점을 찾기 위해 계산을 수행 할 수 있지만 작업을 실행하는 시간의 변동성에 따라 다릅니다.

+0

네, 이것은 본질적으로 제가 끝낸 것입니다 :). –

+0

가끔 사기 치는 것이 가장 좋은 경우도 있습니다. :) – Mnebuerquo

0

불행하게도, 아약스 호출 만 반환합니다, 그래서 그것의 진행 상황을 업데이트해야 할 방법이 없습니다.

loading spinner 또는 뭔가를 사용하는 것이 좋습니다.

정확한로드 진행률을 표시해야하는 경우 다른 각도에서 접근해야 할 수 있습니다.

+0

죄송 합니다만 명확히하지 않으면 죄송합니다. 이것은 AJAX 호출의 진행에 관한 것이 아닙니다. 그것은 내 서버에서 실행 중이며 AJAX 호출을 통해 폴링 될 수있는 작업의 진행 상황입니다. –

+0

Gotcha, 미안, 나는 오해했다. 그리고 나는 또한 당신을 위해 대답을 가지고 있지 않다 : ( – idrumgood

0

CORS 요즘 널리 보급되고 있습니다. 이제는 CORS를 사용하여 도메인 간 XMLHttpRequests를 사용하여 문제를 올바르게 해결할 수 있으며 CORS 지원 부족을 감지하고 이전 브라우저의 JSONP로 폴백하는 것은 쉽지 않습니다.

첫 번째 링크에는 감지 코드 예가 ​​있으며, 작동 방식에 대한 자세한 세부 정보는 on MDC이며, 브라우저 호환성에 대한 자세한 내용은 며칠 전에 the Wikipedia article으로 업데이트되었습니다.

그것의 요점은 다음과 같습니다

  • 모든 현대 웹킷 브라우저 (사파리 4+ 등 크롬 3+, 새 무리)
  • 아무것도 게코 1.9.1+ (파이어 폭스 3.5, 이유로는 2.0 이상 등)
  • Internet Explorer 8 이상 (Sleipnir 등) ... 요청시 자격 증명과 쿠키를 전달하는 플래그를 구현하지 않는다는 경고가 있습니다.

주목할만한 예외는 다음과 같습니다

  • 오페라 (10.61 현재 지원 없음)
  • 카미노
  • 아 로라 ((2.0.5은 게코 1.9.0 (파이어 폭스 3.0)를 기반으로) Arora 0.10.2 현재, API가 있지만 버그로 인해 요청이 실패 함)