서비스 작업자가 작업자 컨텍스트에서 실행되며 DOM에 액세스 할 수없는 것처럼 보입니다. 그러나 Service Worker가 설치되면 사용자가 응용 프로그램이 오프라인으로 작동 함을 알리 길 바랍니다. 어떻게해야합니까?서비스 작업자가 성공적으로 설치된 경우 UI 업데이트
0
A
답변
5
서비스 근로자가 activated state
인 경우 축하 메시지 'Content is cached for offline use
'을 표시하는 가장 좋은시기입니다. 서비스 직원을 등록하는 동안 아래 코드를 시도하십시오.
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js').then(function(reg) {
// updatefound is fired if service-worker.js changes.
reg.onupdatefound = function() {
var installingWorker = reg.installing;
installingWorker.onstatechange = function() {
switch (installingWorker.state) {
case 'installed':
if (navigator.serviceWorker.controller) {
// At this point, the old content will have been purged and the fresh content will
// have been added to the cache.
// It's the perfect time to display a "New content is available; please refresh."
// message in the page's interface.
console.log('New or updated content is available.');
} else {
// At this point, everything has been precached.
// It's the perfect time to display a "Content is cached for offline use." message.
console.log('Content is now available offline!');
}
break;
case 'redundant':
console.error('The installing service worker became redundant.');
break;
}
};
};
}).catch(function(e) {
console.error('Error during service worker registration:', e);
});
}
1
@Prototype Chain의 answer above을 테스트 한 후, 나는 이벤트 핸들러 내 취향보기 위하여, 희망 쉽게 이상/다른 사람에 대한 이해 코드를보다 쾌적한로서 anonymous functions
을 중첩 반대로 named functions
를 사용하고 싶었다.
그러나 문서를 정렬하는 데 소비 한 후에 만 올바른 개체에서 올바른 이벤트를 수신 할 수있었습니다. 그래서 지루한 과정에서 다른 사람을 구하기 위해이 작업 예를 여기에서 공유하십시오.
관련 문제
- 1. 업데이트 UI MapView 서비스
- 2. 서비스 작업자가 설치된 호스트 이름은 어떻게 얻을 수 있습니까?
- 3. 배경 작업자가 문제없이 UI 스레드에서 모델을 업데이트 중입니다.
- 4. 내가이 서비스 작업자가 오프라인 캐싱
- 5. 루프 배경 작업자가 깨진 경우
- 6. 쿼리 설치된 Windows 업데이트
- 7. 설치된 VB.Net 프로그램 업데이트
- 8. 다른 스레드에서 UI 업데이트
- 9. UI 외관이 Visual Studio와 설치된 응용 프로그램을 통해 실행되는 경우
- 10. PC에 설치된 업데이트 목록보기
- 11. 셀러리 작업자가 사망 한 경우 알림 받기
- 12. 배경 작업자가 UI 스레드에 인수 (문자열)를 보내려면 어떻게해야합니까?
- 13. 외부 이벤트에서 UI 업데이트
- 14. Apache2가 설치된 Linux에서의 WCF 서비스
- 15. UI 서비스 ~ 기본 서비스 인증
- 16. XAML 바인딩 UI 업데이트
- 17. 스레드 수면 UI 업데이트
- 18. deferreds로 업데이트 할 UI 해제
- 19. WCF 서비스 비동기 호출 후 WPF 프로젝트의 UI 업데이트
- 20. 백그라운드 스레드에서 웹 서비스 호출 및 기본 스레드의 UI 업데이트
- 21. 업데이트 UI 스레드
- 22. 업데이트 UI 요소는()
- 23. Android에서 스레드 업데이트 UI
- 24. 배경 작업자가 실행되지 않음
- 25. 핸들의 HTTP URL (설치된 경우)
- 26. UI 업데이트 지연
- 27. iOS - 백그라운드에서 UI 업데이트
- 28. 백그라운드 작업자가 사이에 중단
- 29. 다른 스레드에서 UI 업데이트
- 30. Safari 6.1이 설치된 Silverlight OOB를 설치하는 경우
토스트를 표시하는 데 문제가 있습니다. 서비스 근로자가 할 수없는 DOM에 액세스해야합니다. 'console.log()'는 충분하지 않습니다. –
SW에서 DOM에 액세스하지 않습니다. 서비스 근로자를 등록하는 동안이 코드를 작성해야합니다. 서비스 담당자가 활성화되면이 주소로 dom에 액세스 할 수 있습니다. –
알겠습니다. 서비스 노동자를 등록하는 동안 그것을해야했습니다. 나는 SW에서 그렇게하려고 노력했다. 감사. –