index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#009578">
<title>PWA</title>
<link rel="stylesheet" href="src/master.css">
<link rel="manifest" href="manifest.json">
<link rel="apple-touch-icon" href="images/logo_2.jpg">
</head>
<body>
<h3>Progressive Web App</h3>
<script src="src/index.js"></script>
<h4>Addition</h4>
<label for="num1">Enter 1st Number:</label><br>
<input type="text" id="num1" name="num1"><br>
<br>
<label for="num2">Enter 2nd Number:</label><br>
<input type="text" id="num2" name="num2"><br><br>
<button type="button" name="button" onclick="addition()">Add</button>
<div>
<h4>Result: <span id="res"> </span></h4>
</div>
<script>
function addition() {
var x = parseInt(document.getElementById("num1").value);
var y = parseInt(document.getElementById("num2").value);
var z = x + y;
document.getElementById("res").innerHTML = z;
}
</script>
</body>
</html>
manifest.json
{
"name": "PWA demo",
"short_name": "PWA",
"start_url": ".",
"background_color": "#6dcdb1",
"theme_color": "#009578",
"display": "standalone",
"icons": [
{
"src": "images/logo_2.jpg",
"sizes": "512x512",
"type": "image/jpg"
},
{
"src": "images/logo_1.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
sw.js
self.addEventListener("install", e => {
// console.log("Install decode!");
e.waitUntil(
caches.open("static").then(cache => {
return cache.addAll(["./", "./src/master.css", "./images/logo_2.jpg"]);
})
);
});
self.addEventListener("fetch", e => {
// console.log(`Intercepting fetch request for: ${e.request.url}`);
e.respondWith(
caches.match(e.request).then(response => {
return response || fetch(e.request);
})
);
});
src/index.js
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("sw.js").then(registration => {
console.log("SW Registered!");
console.log(registration);
}).catch(error => {
console.log("SW Registration failed!");
console.log(error);
})
}
src/master.css
body {
background: #eeeeee;
}
фильм языке онлайн сериалы про вампиров и оборотней
the best adult generator virtual partner 18+ create erotic videos, images, and virtual characters. flexible settings, high quality, instant results, and easy operation right in your browser. the best features for porn generation.
сервисы рассылок список сервис по созданию емейл рассылок
Contact Me here – Finally, a blog that explains things properly.
code promo melbet du jour telecharger melbet apk
inscription 1win 1win apk
купить квартиру вторичка жк светский лес сочи купить квартиру
Нужен проектор? projector24.ru/ большой выбор моделей для дома, офиса и бизнеса. Проекторы для кино, презентаций и обучения, официальная гарантия, консультации специалистов, гарантия качества и удобные условия покупки.
Learn More – I can’t believe I just learned this today. Thanks!
View Blog – Really enjoyed how you broke things down step by step.
химчистка покраска обуви химчистка обуви цена
Лучшее казино ап икс официальный играйте в слоты и live-казино без лишних сложностей. Простой вход, удобный интерфейс, стабильная платформа и широкий выбор игр для отдыха и развлечения.
Лучшее казино ап икс официальный играйте в слоты и live-казино без лишних сложностей. Простой вход, удобный интерфейс, стабильная платформа и широкий выбор игр для отдыха и развлечения.