Skip to main content

Internet Explorer - the bane of bank holidays

I'm pretty sure that my last bank holiday was ruined by Internet Explorer 8, and now that our clients have dropped that from their supported version list, its younger brother has stepped up to the plate to try to ruin this bank holiday for me.

A stylesheet which works fine on Firefox, Safari, and Chrome (and even works tolerably on IE8, incidentally), inexplicably fails to apply a huge number of styles on IE9. This is a delightful thing to find out essentially 1 working day before a planned release. We can of course go into some life lessons learnt, but they might come out a bit on the grim side (i.e. never trust anyone else to check anything, you will always have to fix everything yourself). So nuts to that. This is about technical lessons learned.

Here are some things I've found so far:


  • This project has some pretty terrible CSS, a product of stuff being layered on top of other stuff forever. Code decays, and CSS decays particularly fast, it seems. When you look at the code in a CSS3 Validator, the validator does not look kindly on it (115 errors, 341 warnings).
  • Select2 has some pretty terrible CSS. Almost half of the errors come from the Select2 stylesheet.
  • Opacity (filter: alpha) for IE <= 8 is not valid CSS3. If you're not supporting IE8, get rid of those filter rules.
  • IE <= 9 has limits on how many CSS selectors you can have in a page. It's 4096. That might seem like a lot, but it's apparently the sort of thing complex projects can violate, especially if they use @extend and other sorts of thing. You can work out how many css selectors are on your page by loading it and then pasting in a bit of JS to the console. https://gist.github.com/krisbulman/0f5e27bba375b151515d - which suggests that this site has 2466 rules and 5451 selectors - meaning that IE will ignore the last 1355 styles!
  • Something about SASS @extend seems to cause IE9 to choke on some files.

Hopefully while I'm on holiday our team abroad will hunt down the problem and solve it in one fell swoop. But if not, I may have to learn some more things.

Comments

Popular posts from this blog

"How Do I Test It?" Proof Key for Code Exchange by OAuth2 Public Clients

Having adapted an example OpenID Connect server (built in Rails) to a production system, I need to add PKCE support so that it could be used securely to allow mobile systems to log in. OAuth2 (and therefore OpenID-Connect) isn't considered as secure on mobile devices because rogue applications on the mobile device can hijack the authorization code. Here I'll try to describe the thought process that goes into not the implementation, but the interpretation of the spec into a set of tests that will allow us to be reasonably confident that mobile clients will be able to connect. (Pleasingly, the first time the mobile integrators tried to connect with PKCE it worked perfectly, both with errors and successful paths). My implementation is in Ruby, of course, and my tests will be in RSpec with expectations, so some of the language might not be generic but the concepts should map to other languages / frameworks. I've marked the actual tests I needed in yellow with the word TEST:...

4Store with Snorql on Raspberry Pi

Problem I need to access triple-store data for a work thing, but the data I have to test with isn't in their (sesame) triple store yet. There are RDF files, though. Solution Install 4Store on a pi (I had one with a default Raspbian running because it's the mumble server). sudo apt-get install 4store ...then I set up the 4store with instructions from here : sudo 4s-backend-setup saws sudo 4s-backend saws 4s-httpd saws then import the RDF files with a convoluted command: curl --verbose --header 'Content-type: application/rdf+xml' --upload-file MSH_Thales_Trans.rdf --url 'http://localhost:8080/data/http%3A%2F%2Fwww.purl.org%2Fsaws%2Fontology%23' (for each file - the url is the saws url encoded, the .rdf bit was done for each file). Then fix the RDF, because rapper rejects it all. To validate the RDF I used this: http://www.rdfabout.com/demo/validator/ Okay, now I can see things on the pi: http:// <pi ip address...

Chrome Extension: iPlayer to XMBC

There's a Chrome extension called Play To XBMC which adds a little button that will send a YouTube, Vimeo, or CollegeHumor video to XBMC - provided you have the YouTube plugin installed. This is a lot more convenient that using XBMC to search directly, if you don't have a keyboard plugged into the XBMC box. The XBMC iPlayer plugin suffers from the same problem that browsing/searching aren't easy without a keyboard, so I wondered if I could make a chrome extension that would do the same for iPlayer. Chrome extensions are packages of javascript, html, and image files that get unpacked by Chrome when they're installed. You make a Manifest file (which is a JSON file) that tells Chrome what icons to include, what sort of package it is, etc. The Play To XBMC extension is a browser one - the button is always there. I made mine page specific - it only appears on valid iPlayer episode pages. You do this by putting in a javascript page that runs in the background every time ...