Tags: extension

24

sparkline

Monday, March 18th, 2019

Hello, Goodbye - Browser Extension

A handy browser extension for Chrome and Firefox:

“Hello, Goodbye” blocks every chat or helpdesk pop up in your browser.

Wednesday, March 13th, 2019

Accessibility Insights

A handy accessibility tool. The browser plug-in is only for Chrome right now (I use Firefox as my main browser) but it’s pretty nifty—the tool for visualising tabbing is really useful.

Sunday, January 27th, 2019

Deface

A browser extension that encrypts and decrypts posts on Facebook—if two users have the extension installed, they can communicate without Facebook being able read their messages.

Friday, October 26th, 2018

Service workers and browser extensions

I quite enjoy a good bug hunt. Just yesterday, myself and Cassie were doing some bugfixing together. As always, the first step was to try to reproduce the problem and then isolate it. Which reminds me…

There’ve been a few occasions when I’ve been trying to debug service worker issues. The problem is rarely in reproducing the issue—it’s isolating the cause that can be frustrating. I try changing a bit of code here, and a bit of code there, in an attempt to zero in on the problem, butwith no luck. Before long, I’m tearing my hair out staring at code that appears to have nothing wrong with it.

And that’s when I remember: browser extensions.

I’m currently using Firefox as my browser, and I have extensions installed to stop tracking and surveillance (these technologies are usually referred to as “ad blockers”, but that’s a bit of a misnomer—the issue isn’t with the ads; it’s with the invasive tracking).

If you think about how a service worker does its magic, it’s as if it’s sitting in the browser, waiting to intercept any requests to a particular domain. It’s like the service worker is the first port of call for any requests the browser makes. But then you add a browser extension. The browser extension is also waiting to intercept certain network requests. Now the extension is the first port of call, and the service worker is relegated to be next in line.

This, apparently, can cause issues (presumably depending on how the browser extension has been coded). In some situations, network requests that should work just fine start to fail, executing the catch clauses of fetch statements in your service worker.

So if you’ve been trying to debug a service worker issue, and you can’t seem to figure out what the problem might be, it’s not necessarily an issue with your code, or even an issue with the browser.

From now on when I’m troubleshooting service worker quirks, I’m going to introduce a step zero, before I even start reproducing or isolating the bug. I’m going to ask myself, “Are there any browser extensions installed?”

I realise that sounds as basic as asking “Are you sure the computer is switched on?” but there’s nothing wrong with having a checklist of basic questions to ask before moving on to the more complicated task of debugging.

I’m going to make a checklist. Then I’m going to use it …every time.

Sunday, June 17th, 2018

Detecting image requests in service workers

In Going Offline, I dive into the many different ways you can use a service worker to handle requests. You can filter by the URL, for example; treating requests for pages under /blog or /articles differently from other requests. Or you can filter by file type. That way, you can treat requests for, say, images very differently to requests for HTML pages.

One of the ways to check what kind of request you’re dealing with is to see what’s in the accept header. Here’s how I show the test for HTML pages:

if (request.headers.get('Accept').includes('text/html')) {
    // Handle your page requests here.
}

So, logically enough, I show the same technique for detecting image requests:

if (request.headers.get('Accept').includes('image')) {
    // Handle your image requests here.
}

That should catch any files that have image in the request’s accept header, like image/png or image/jpeg or image/svg+xml and so on.

But there’s a problem. Both Safari and Firefox now use a much broader accept header: */*

My if statement evaluates to false in those browsers. Sebastian Eberlein wrote about his workaround for this issue, which involves looking at file extensions instead:

if (request.url.match(/\.(jpe?g|png|gif|svg)$/)) {
    // Handle your image requests here.
}

So consider this post a patch for chapter five of Going Offline (page 68 specifically). Wherever you see:

if (request.headers.get('Accept').includes('image'))

Swap it out for:

if (request.url.match(/\.(jpe?g|png|gif|svg)$/))

And feel to add any other image file extensions (like webp) in there too.

Friday, March 30th, 2018

Facebook Container Extension: Take control of how you’re being tracked | The Firefox Frontier

A Firefox plugin that ring-fences all Facebook activity to the facebook.com domain. Once you close that tab, this extension takes care of garbage collection, ensuring that Facebook tracking scripts don’t leak into any other browsing activities.

Sunday, December 17th, 2017

Mozilla betrays Firefox users and its nominal principles

That’s a harsh headline but it is unfortunately deserved. We should indeed hold Mozilla to a higher standard.

Thursday, September 21st, 2017

Fix Twitter by Jonathan Suh

Make Twitter Great Again:

Fix Twitter is a browser extension to always show “replying to” in replies and threads along with an option to restore the old-school @-mentions.

Tuesday, September 5th, 2017

thebaer/MMRA: Make Medium Readable Again — a browser extension

I’ve gotten a little tired of showing up to a Medium-powered site on a non-medium.com domain and getting badgered to Sign Up! or Get Updates! when I’m already a Medium user.

A Chrome extension to Make Medium Readable Again by:

  • Keeping the top navigation bar from sticking around
  • Hiding the bottom “Get Updates” bar completely
  • (Optionally) hiding the clap / share bar
  • (Optionally) loading all post images up front, instead of lazy loading as you scroll

Shame there isn’t a mobile version to get rid of the insulting install-our-app permabutton.

Thursday, July 21st, 2016

t.co Remove - Chrome Web Store

Fight the scourge of performance-killing redirect-laden t.co links in Twitter’s web interface with this handy Chrome extension.

Tuesday, July 12th, 2016

Chromelens

A handy Chrome extension to simulate different kinds of visual impairment.

Tuesday, January 14th, 2014

funzeye/Web-Thang

Web-Thang is a chrome extension that replaces all instances of the term ‘web thang’ or ‘web thang/web thang’ with the term ‘web thang’.

Wednesday, March 13th, 2013

blech/cloud-to-moon on GitHub

Best. Chrome extension. EVER!

Paul’s Chrome extension replaces every instance of “the cloud” with “the moon” (something I do in my head anyway).

It’s forked from an extension that replaces every instance of “the cloud” with “the clown.”

Oh, and Ben has written a version for Safari …forked from code that converts every instance of “the cloud” to “my butt.”

Wednesday, April 6th, 2011

Experimental Firefox and Chrome extensions to copy and paste contacts — Glenn Jones

More brilliant and useful code from Glenn: copy and paste contact details from one URL into a form on another URL.

Thursday, December 23rd, 2010

Huffduff it - Chrome Web Store

A Huffduffer extension for Chrome — thanks to Jeremy Carbaugh.

I’ll be adding a link to this from the footer of Huffduffer for Chrome users.

Wednesday, August 5th, 2009

Plug in and huffduff

Beer o’clock in Brighton begins shortly after work ends on a Friday evening. That’s when the geeks of Brighton unshackle themselves from their keyboards and monitors to congregate in a pub. If the weather is good, it’ll be a sunny pub. Last friday the Clearlefties descended on The Eagle where we were joined by Ribotians and others.

Glenn showed up and we proceeded to geek out on our usual favourite topics; microformats and data portability. He had spent the day hacking on a Firefox plug-in. If you haven’t tried his Identify extension, do yourself a favour and install it—it’s quite astounding.

I mentioned that I had tried to hack together my own Firefox extension for Huffduffer but was thwarted by my lack of skill in reverse-engineering and penetrating the documentation. I wanted to provide a fairly simple behaviour: right-click on a link to an audio file and select an option to huffduff it.

Two days later I got an email from Glenn with a file attached …a Firefox extension he built for huffduffing. Fantastic!

I hacked around with the JavaScript a little bit (adding a check to make sure the hyperlink being right-clicked was pointing to an audio file) and added Huffduffer icons from Paul’s icon set. Meanwhile Glenn added a little touch of genius; using Firefox’s built-in microformats parser to check for values on the page and pre-fill the Huffduffer form with them.

Anyway, grab the Huffduffer Firefox plug-in for yourself and give it a whirl.

Next time it’s beer o’clock in Brighton, I owe Glenn a beer.

Friday, June 5th, 2009

Wednesday, March 11th, 2009

Identify - Firefox entension | Madgex Lab

Okay, I know I said "holy freakin' crap!" the last time I linked to one of Glenn's Social Graph API experiments but now he's gone and created a Firefox plug-in: press alt-i and you can see the social graph for anyone's site. Holy freakin' crap!

Saturday, February 14th, 2009

Don't Give Your Account Passwords Away, a Mission on PMOG

A PMOG mission where players learn about the password anti-pattern.

Wednesday, July 16th, 2008

MobileMe: 30-day Extension Eligibility and Details

Apple admit that they totally screwed up the roll-out of MobileMe and offer a 30 day extension for free. Now if only it were as easy to make up for the craptastic markup underlying the web-based MobileMe apps.