Most service worker code samples show only the happy path where the fetched resource will eventually be available, eg: self.addEventListener('fetch', event => { // Skip cross-origin requests, like those for Google Analytics. if (event.request.url.startsWith(self.location.origin)) { event.respondWith( caches.match(event.request).then(cachedResponse => { if (cachedResponse) { return cachedResponse; } return caches.open(RUNTIME).then(cache => { return fetch(event.request).then(response => { // Put … Continue reading Error handling for failed network requests with service workers
Category: javascript
Book of dark arts: selective disclosure with CSS
Show and hide pages and page elements with declarative CSS instead of imperative code
Secure messaging in the browser
By observing news and public discussions I feel that there is a growing awareness of data privacy and an increasing demand for secure person-to-person communication. In order to address my communication needs, I plugged together a few Javascript libraries and started the Webencryption [1] project on Github. What is Webencryption? Webencryption is a rather crude … Continue reading Secure messaging in the browser
Unjam CSS
Abstract: Unjam CSS is a technique for removing render-blocking CSS from pages over which we have only partial control, such as CMS or portals. The problem: a portal generates HTML pages based on a template. Custom HTML can be inserted at specific place holders, but we can't modify the rest of the page HTML. The … Continue reading Unjam CSS
Advanced web security topics
(Updated 22 May 2020) This post discusses web security issues that I come across - so far thankfully mostly by reading about them. It is a work in progress which I'll keep updating. The post title includes "advanced" because the topics discussed here involve clever, non-trivial hacks, are novel at the time of their publication … Continue reading Advanced web security topics



