혜성/서버 푸시 iframe을로드하는 동안 브라우저 "Throbber of Doom"을 중지하십시오.

StackOverflow https://stackoverflow.com/questions/1064782

문제

Comet 또는 Ajax Long Pull 기술을 사용할 때는 일반적으로 iframe이 사용됩니다. 그리고 Iframe이 긴 연결이 닫히기를 기다리는 동안 브라우저는 스로버 (진행/로딩 표시기)를 돌리고 있습니다.

일부 웹 사이트, 예를 들어 etherpad.com은 그만두 었습니다.

그들은 그걸 어떻게 햇어?

도움이 되었습니까?

해결책

인터넷의 내장에서 하루와 밤을 파는 후에는 다음과 같이 생각했습니다.

  1. 서버 중심 이벤트 - 매우 멋지고 현재 오페라에서만 작동하지만 HTML5의 일부일 수 있으며 다른 브라우저는 언젠가이를 지원할 수 있습니다. 콘텐츠 유형의 "Application/X-Dom-Event-stream"이 포함 된 새 요소 태그를 추가합니다. 섬기는 사람 이벤트를 발사합니다 클라이언트 돔. 그리고 내가 이해하는 한 진행률 표시기를 표시해서는 안됩니다. 그것은 또한 표준의 작업 초안이며, 전체 Iframe 혜성과 같은 해킹이 아닙니다.

  2. xmlhttprequest- Firefox 및 Safari에서는 그렇지 않지만 IE는 아니지만 각 ReadyStateChange 이벤트에 나타날 때 조각을 처리 할 수있는 긴 풀 페이지로드에 사용할 수 있습니다. 진행 지표*를 표시하지 않습니다. - 아래 의견을 참조하십시오

  3. ActiveXobject ( "htmlfile") - 즉, 현재 창 범위 외부에있는 페이지/창을 만들기 위해 IE에서 사용될 수 있습니다. 이것은 진행률 표시기가 사라집니다! 로드 된 iframe은 보이지 않는 브라우저에 있습니다.

서버에 대한 자세한 내용 :

다른 두 기술에 대한 자세한 내용 (문제를 더 잘 설명) : * http://meteorserver.org/browser-techniques/

각 기술과 더 많은 기술에 대해 더 깊이 :

다른 팁

나를 위해 Ajax 요청에서 설정 타임 아웃을 실행하면 모든 것이 해결되었습니다. work.ready에서 요청을 실행했을 때 "Doom의 Throbber"를 얻었습니다. 그러나 Settimeout을 사용하면 발생하지 않습니다. (이 수정은 크롬에도 적용됩니다).

몇 가지 예가 필요한 경우이 사람은 Firefox 문제를 해결하기위한 해결책을 제공했습니다.http://www.shanison.com/?p=237

나는 같은 문제가 있었고 해결책은 숨겨진 iframe 대신 ajax를 사용하는 것이 었습니다. 따라서 페이지 어딘가에 iframe을 생성하는 대신 :

$("#chat .msg_list").prepend('<iframe id="hidden" src="chatFrame?id=$userId" frameborder="0" height="0" width="100%"></iframe>');

jQuery ajax 호출을 사용하여 iframe 컨텐츠를 일부 div에로드했습니다.

$('#chat #chat_comet').load('chatFrame?id=$userId');
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top