Press "Enter" to skip to content

Month: February 2009

Techy: IE8 incompatible list: What isn’t listed?

Zdnet has just pointed me towards Microsoft’s Internet Explorer 8 Compatibility View List for Windows Vista which lists all the websites IE 8 is known to have problems with: and it’s extensive (see this Zdnet list for a human-readable display). I did a quick search for most of the major sites and they all seem to be listed: From (if they can’t get their own site working in their own software it doesn’t bode well), all Amazon sites (.com and .de, .cn and etc), all major social networking sites (,, and are all listed), to all of Google,, , all of eBay and many many more. And this is only the 2,400 major sites that Microsoft have found to have problems with IE8 (or should that be: sites that Microsoft have found that IE8 is broken on). All the more reason to drop Internet Explorer and try Firefox, Safari, Opera or another browser of your choice (mine’s Firefox)

Dojo Javascript: Changing a FilteringSelect SELECT menu when another changes

Here’s a bit of Dojo Javascript which will allow you to dynamically change a SELECT sub menu (technically a “FilteringSelect” menu with an id of “secondFilteringSelectId”) when the first SELECT menu is changed (another FilteringSelect menu with an id of “firstFilteringSelectId”). It uses the Dojo’s ItemFileReadStore method to fetch an ajax page (called ajax) before populating the menu. It also has some caching built in to reduce the number of calls to the server and associated network traffic. dojo.require(“”); aSecondFilteringCache=Array(); dojo.addOnLoad(function() {     dijit.byId(‘firstFilteringSelectId’).onChange=function() {         fFirstFilteringSelectIdChanged(dijit.byId(‘firstFilteringSelectId’).value);     }     fFirstFilteringSelectIdChanged(‘defaultSetting’); }); function fFirstFilteringSelectIdChanged(thisValue) {     secondSelect=dijit.byId(‘secondFilteringSelectId’);     if (aSecondFilteringCache[thisValue]==undefined) {         var myStore=new{url:’ajax?setting=’+thisValue});         var gotList = function(items, request) {             aSecondFilteringCache[thisValue]=myStore;   ;             secondSelect.setValue(items[0].id);         }         var gotErrors=function(error,request) {             alert(‘Request failed:’+error);         }         var request=myStore.fetch({onComplete:gotList,onError:gotErrors});     } else {[thisValue];         secondSelect.setValue([0].id);     } } I am just learning Dojo though, so there could be a much better/sensible way of doing this: let me know if you know/find it!

Techy: Cross Browser Testing

For a while now, I’ve been a great fan of Browser Shots to test websites in Firefox, Internet Explorer, Safari and Opera without having to install all of those web browsers (and previous versions) on my machine. However, it does have a snag: you can only test “static pages”: you can’t interact with the page in anyway (so if you wanted to see if a drop down menu worked well in IE 5.5, you’re out of luck). However Keyboardface has just blogged about a service I hadn’t heard of before called Cross Browser which gives you practically a VNC/remote desktop/LogMeIn style connection to a remote computer (which seem to be Virtual Machine images) which has a selection of browsers installed for you to interactively test on. It’s pretty cheap: there’s a free option, $1 for 5 minutes option (with discounts) or a “pay per month” option. It’ll be worth considering when I’m needing to test the site I’m working on on multi-platform and multi-browser scenerios.

Techy: Test Credit and Debit Card Numbers

I’ve been working on an e-commerce system recently (as you may have been able to guess) and to test the credit card integration side of things, I needed some test credit card details of “valid looking” card numbers…

I eventually managed to gather 102 card numbers which passed validation: i.e. the Bank Identification Number [BIN] / Issuer Identification Number [IIN] numbers [the first 7 digits] matched up with the “alleged” card type and the whole card number passed the Luhn algorithm validation.

I must emphasis, before I get thousands of comments, these are TEST credit card numbers and are NOT VALID (I did not get as far as validating that they were theoretically assigned to a bank: just that they were theoretically assigned to a card issue): they are intended to test code in development to ensure that the code recognises the card type correctly and the Luhn algorithm is correct. You should, therefore, be able to use any expiry date or CCV/CSC you like for testing.

You can download these credit card numbers in a BSD released PHP file to make it easier to test with if you wish.

The developmental test card numbers are after the jump (along with details of the original sources):