Skip to content

Instantly share code, notes, and snippets.

@pepelsbey
Last active November 18, 2016 21:37
Show Gist options
  • Save pepelsbey/bae6547181cd14e5c77ae87ce1895461 to your computer and use it in GitHub Desktop.
Save pepelsbey/bae6547181cd14e5c77ae87ce1895461 to your computer and use it in GitHub Desktop.
// Проверяем поддержку сервис-воркера
if ('serviceWorker' in navigator) {
// Регистрируем сервис-воркер
navigator.serviceWorker.register('./service-worker.js');
form.addEventListener('submit', function (e) {
let formData = new FormData(form);
// Отправляем сообщение в фоне
navigator.serviceWorker.ready.then(function (swRegistration) {
idbKeyval.set('comment', commentArea.value);
idbKeyval.set('name', nameInput.value ? nameInput.value : false);
messageElement.className = 'message info';
messageElement.textContent = 'Похоже вы в офлайне. Комментарий опубликуется автоматически как только вы будете онлайн.';
return swRegistration.sync.register('form-post');
});
// Всегда вызывайте preventDefault в конце
// см. http://molily.de/javascript-failure/
e.preventDefault();
});
// Событие для получения сообщения
// отправленного сервис-воркером
navigator.serviceWorker.addEventListener('message', function (e) {
if (e.data == 'success') {
messageElement.className = 'message success';
messageElement.textContent = 'Ваш комментарий успешно опубликован.';
let nameValue = false;
idbKeyval.get('name').then(function (data) {
nameValue = data;
let commentValue = '';
idbKeyval.get('comment').then(function (data) {
commentValue = data;
appendComment(nameValue, commentValue);
});
});
} else if (e.data == 'error') {
messageElement.className = 'message error';
messageElement.textContent = 'При публикации комментария произошла ошибка. Попробуйте ещё раз.';
}
});
} else if (window.FormData) {
// …
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment