programing

comet/server push iframe을 로드하는 동안 브라우저 "throuber of doom"을 중지합니다.

showcode 2023. 3. 26. 11:59
반응형

comet/server push iframe을 로드하는 동안 브라우저 "throuber of doom"을 중지합니다.

Comet 또는 Ajax Long Pull 기술을 사용하는 경우 - iframe이 주로 사용됩니다.또한 iframe이 긴 연결이 닫히기를 기다리는 동안 브라우저는 thrubber(프로그레스/로드 인디케이터)를 회전시킵니다.

etherpad.com과 같은 일부 웹사이트는 이를 중단시킬 수 있었다.

어떻게 그들이 그것을 할까요?

하루 종일 인터넷 상인들의 속을 파고든 후, 내가 생각해낸 것은 다음과 같다.

  1. server-sended events - 매우 쿨하며 현재 Opera에서만 작동하지만 HTML5의 일부일 수 있으며 다른 브라우저에서도 지원할 수 있습니다.content-type의 「application/x-dom-event-stream」을 가지는 새로운 요소 태그를 추가합니다.이것에 의해, 서버클라이언트 DOM내의 이벤트를 기동할 수 있습니다.그리고 제가 아는 한 진행률 표시는 하지 말아야 합니다.그것은 또한 표준적인 작업 초안이지, 전체 iframe 혜성 같은 해킹이 아닙니다.

  2. XMLHttpRequest - Firefox 및 Safari에서는 사용할 수 있지만 IE에서는 사용할 수 없습니다.이것에 의해, 각 readyStateChange 이벤트에 표시되는 fragment를 처리할 수 있습니다.진행률 표시기를 표시하지 않습니다.*. -- 아래 설명을 참조하십시오.

  3. ActiveXObject("htmlfile") - IE에서 현재 창 범위를 벗어나는 페이지/창을 만들 수 있습니다.그러면 진행률 표시기가 사라집니다!로드된 iframe은 보이지 않는 브라우저에 있습니다.

server-sent-events 상세:

기타 2가지 기술에 대한 자세한 내용(또한 문제를 더 잘 설명):* http://meteorserver.org/browser-techniques/

각 기술에 대해 더 자세히 알아보고 더 많은 기술을 제공합니다.

저는 ajax 요청으로 set Timeout을 실행하면 모든 것이 해결되었습니다.document.ready의 요청을 실행했을 때, 저는 "죽음의 공포"를 느꼈습니다.그러나 set Timeout에서는 이 문제가 발생하지 않습니다.(이 수정은 Chrome에서도 유효합니다.

만약의 경우를 대비해서, 이 사람은 파이어폭스 문제를 해결하기 위한 해결책을 제시했습니다.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>');

iframe 콘텐츠를 div에 로드하기 위해 jquery ajax 호출을 사용했습니다.

$('#chat #chat_comet').load('chatFrame?id=$userId');

언급URL : https://stackoverflow.com/questions/1064782/stop-the-browser-throbber-of-doom-while-loading-comet-server-push-iframe

반응형