2010-12-03 4 views
0

HTML5 workers는 잠긴 사용자 인터페이스를 피하는 매우 흥미로운 개념입니다.jQuery 이벤트를 바인딩하는 HTML5 웹 작업자 (IE는 무엇입니까?)

상점 애플리케이션의 경우 jQuery 바인딩을 사용하여 기능을 활성화해야하는 더 많은 제품 위젯을 나열하고 있습니다.

웹 작업자가이 작업을 수행하여 페이지가 훨씬 빨리 반응하도록 할 수 있습니까?

웹 작업자를위한 지원은 IE에서는 부족하지만 지원이 도착할 때까지 시뮬레이션/시뮬레이트가 가능할 수 있습니까?

는 그래서 그들을 렌더링 속도를 사용하여,이 IE에 대한 구현 및 이전 버전의 브라우저

답변

1

예, 웹 노동자들이 DOM을 고정하지 않는 http://code.google.com/p/ie-web-worker/을 발견했다.

웹 작업자의 유일한 대안은 window.setTimeout이라는 일련의 짧은 함수를 사용하는 것이지만 DOM을 잠글 수 있습니다.

편집 : 당신이 발견 한 대안은 전혀 다릅니다. 그것은 선제 멀티 태스킹을 수행하지 않기 때문에 (어떻게 할 수 있겠습니까?), 장시간 실행되는 스크립트를 실행하면 브라우저가 페이지가 충돌했다고 생각하지만 크롬, 파이어 폭스 등은 그렇지 않습니다.

기본적으로, DOM에 액세스해야합니다. 작업을 상당히 큰 부분 (최대 50ms)으로 나눈 다음 각 부분을 window.setTimeout에 배치하고 브라우저에서 작업하도록 예약하십시오. 부품이 너무 작 으면 브라우저가 시간을 낭비하게됩니다.

+0

: "참고 : 평소처럼, 배경 스레드를 포함한 노동자-수있는 DOM을 조작 할 작업은 배경으로 촬영합니다. 스레드가 DOM을 변경해야하는 경우 해당 작업을 수행하기 위해 작성자에게 메시지를 게시해야합니다. " 그래서 $ ('# id'). (functin() {}); DOM에 영향을 미치지 않을까요? – Michael

+0

DOM을 조작하고 싶다는 것을 몰랐습니다. 아니요 웹 작업자가 메시지 처리 및 게시 이외의 작업을 수행 할 수 없습니다. DOM 액세스는 단일 스레드 여야하기 때문에 DOM을 조작 할 수있는 웹 작업자를 만드는 것은 의미가 없습니다. –

+0

하지만 클릭 이벤트 바인딩을 DOM 조작으로 추가할까요? – Michael

0

웹 작업자는 장기 실행 스크립트를 작성하는 경우 유용합니다. 장기 실행 스크립트를 "작업자"프로세스에 오프로드하면 작업자가 UI를 차단하지 않으므로 UI가 반응을 유지합니다. 불행히도, IE 사용자 (Google 사용자가 설치되어 있지 않은 경우)를위한 웹 근로자를위한 대단한 심/폴리 폴리은 인식하지 못했습니다. 앱을 반응 적으로 유지하는 가장 좋은 방법은 웹 작업자를 지원하는 브라우저에서 웹 작업자를 사용하는 것인데, 사용하지 않는 브라우저에서는 setTimeout (약 100ms)을 사용하는 것으로 떨어집니다. 당신이 구글 기어를 기반으로 심에 관심이 있다면

, 여기있다 : http://html5-shims.googlecode.com/svn/trunk/demo/workers.html MDN에서

+0

예, Chrome 프레임, FTW를 모두 설치하면 쉽습니다. 그때까지는 setTimeout 솔루션이 IE를위한 방법이라고 생각합니다. 내가 위에 제기 한 링크는 1ms의 타임 아웃을 사용합니다. 조금 낮은 것 같아요? – Michael

+0

시간 제한이 얼마나 오래 있는지는 중요하지 않습니다. 그것이 기다리는 최소 금액이며, 귀하에게 통제권을 돌려주기 전에 다른 일을하기로 결정할 수도 있습니다. –

+0

하지만 코드를 실행하는 데 약간의 오버 헤드가있는 것 같습니다. 따라서 큰 값 (setTimeout의 경우)과 작은 값 (setTimeout의 경우)이 많은 함수 호출의 오버 헤드 사이에서 가중치를 매겨 야합니다. - 또는 단지 이론적 인 것입니다 (큰 가치 부분은 충분히 실용적입니다) – Michael

관련 문제