[Skip top navbar]

Andrew Gregory's Web Pages

Beach at Lancelin, Approx 31°1'5"S 115°19'49"E


NAB Internet Banking Problems

A site redesign in late 2005 has finally resulted in the NAB bringing their February 2002 web code in Internet banking up to date. Unsurprisingly, it now works perfectly in Opera. About time!

Opera is still flagged as an unsupported browser, but at least getting past that is as simple as clicking "Continue".


The National Australia Bank's (NAB) Internet Banking facility does not like Opera. This seems to be a common affliction with banks and Opera, so I wasn't really surprised. After some discussion on an Opera newsgroup I decided to look into the problems.

Initially I found four problems. The first one was browser sniffing being used to block Opera from getting to the login page. It is easily worked around by having Opera identify as Mozilla or MSIE. The next two were Javascript related. These have since been fixed by Opera Software. The last problem is with the third-party DHTML menu scripts used by the bank.



It seems as if there are at least two different web development teams operating at the NAB. The evidence is that there are two different menus systems in use - one for the main web site and another for the Internet Banking facility.

Thankfully, the NAB has at least kept their main site up-to-date. Unfortunately, the same can't be said for their Internet Banking site. Its menu scripts are so old they predate Opera 7 and hence don't recognise that Opera 7 and later are, in fact, fully capable of handling them. Of course, the menu developers have long since updated their scripts to support Opera 7 (and 8), it's just that the NAB web site maintainers haven't done any maintenance on the menu scripts for over three years!

Main Web Site

This uses v5.3.1 of HierMenus (dated 2003-11-20). When the bank updated their main site in 2004, they also updated their menu script, from the v4 that refused to work with Opera, to the v5 script that works perfectly.

Internet Banking Web Site

This uses v2.0 (build 456 dated 2002-02-23) of Likno's AllWebMenus product. The latest is v4.0 (build 616 dated 2005-04-22).

This menu system has been fully compatible with Opera 7 since v3.0 (build 498 dated 2003-01-31). The first official Opera 7 release was only three days earlier, on 2003-01-28! You certainly can't fault Likno's browser support!

The Internet Banking web site also uses a primitive browser sniffer to block browsers the bank considers to be incompatible. It is easily sidestepped by "Identifying as MSIE 6.0" or Mozilla (Opera Quick Preferences - F12). The menus are not so easily convinced, though, and will refuse to work with Opera 7.


In spite of the lack of official support of Opera 7 and later by the incredibly old menu scripts the bank is still using, Opera 7 and later can nevertheless work perfectly well with the old scripts, provided they can be convinced to cooperate!

Opera 7 users will need to use a rewriting proxy, such as The Proxomitron. Opera 8 users simply need to make a couple of changes to an ini file. The proxy solution is vastly more complicated, and every Opera 7 user should upgrade to 8 anyway. For those reasons, I won't explain the proxy solution.

The solution for Opera 8 involves adding an entry to the "ua.ini" file. See my web page Faking Browser IDs for full details on ua.ini, where to find it, and how to edit it.

What you need to do is add the following entry to your ua.ini:


This tricks the National web site into thinking Opera is really Internet Explorer. The result is the Internet Banking menu systems will work perfectly! You might get a warning message before logging on when you first use the Internet Banking system, just tick the "I don't want to see this message again" checkbox and continue. Here's a screenshot of the Internet Banking facility working perfectly (showing Opera 7.23 using my old Proxomitron filters, the new ua.ini settings cause the menus to drop down a touch further to the right):

Screenshot of Opera and NAB Internet Banking

Lobby for Change

If you would like to assist in the campaign to get the bank to bring their web site up-to-date, send them a polite email:

All the NAB needs to do is update their scripts to at least the version I've indicated above. It shouldn't be that hard for them to do. Unfortunately, it seems that it's beyond them! Perhaps a little encouragement will help. Remember to be polite!


2005-05-02: After what appears to be a completely new look done for the internet banking, the bank has done a big fat zero on their menu script (now more than three years old). Sigh. One point of progress is that the login button no longer blocks Opera users.

2005-04-22: The NAB announce a revised internet banking service to be released 2005-05-02. Here's hoping they've updated their menus and not introduced any new incompatibilities.

2005-04-19: Opera Software release version 8 of their browser. They have implemented a feature (called ua.ini) that allows Opera to identify itself differently depending on the sites it visits. Using appropriate settings (see above), the NAB can be tricked into working correctly.

2005-02-08: Sent a reply the same day saying that if they had simply kept their menu scripts up-to-date at any time within the last two years, I wouldn't have needed to contact them at all.

2005-02-08: Received a reply. Basically: "we need to test new browsers" [and that takes longer than two years? the browser under test would be obsolete and no longer used by then!], "IE is 93% and Netscape 6.5%" [well, hello, Opera won't appear in the stats because the ancient menu script craps out, preventing customers from using the service!]

2005-02-01: It's almost the two year anniversary of this issue, and the NAB still hasn't done a single thing! I've written to them again, pointing out their total lack of action, as well as their intention one year ago to have things working in Opera.

2004-05-22: Re-wrote this page to hopefully make more sense, and to incorporate the use of new general purpose browser cloaking Proxomitron filters. These new filters eliminate the need for my old NAB-specific filters.

2004-02-04: After a bit of to-ing and fro-ing, finally got a bit of positive feedback from the bank! They have said they're evaluating some changes in relation to Opera, but won't release anything until they're sure nothing else breaks.

2003-01-12: Sent a third email. Got a reply on 2003-01-15 (referred to browser requirements page). Replied same day, got another reply 2003-01-17 (Sunday!) which advised my comments had been "passed on", identical to the response in October. In other words, no progress. Replied 2003-01-18. Waiting.

2003-11-11: Discovered the source of the scripts used by the main web site - HierMenus. Same deal as the other menus - they haven't been updated for months (nearly years)! If only scripts were kept up to date! Really - this is basic web site maintenance. Somebody at the bank isn't doing their job.

2003-10-06: Advised the bank of their out-of-date scripts for a second time, mentioning their out-of-date scripts on their main site for the first time.

2003-10-01: New Proxomitron filters that fix both DHTML menus utilized by the bank. Both menus, those used in the main web site and the internet banking, now work perfectly! I still wish the Proxomitron wasn't needed, though.

2003-09-23: The newly released Opera 7.20 is now fully compatible with the web pages the bank are using, except for the ancient DHTML menu script they're still using.

2003-02-21: Advised the bank their Internet Banking menu scripts were out of date.

Technical Details

For those who are interested, here is a description of the technical details behind the problems with the NAB. This is intended to show how simple browser sniffing stupidity can get between you and a web site!

The Main NAB Web Site

These have since been updated, but one of the scripts that used to activate the navigation menus on the left included a test that assumed Opera was incapable of handling the menus. The fix was quite simple:

Before (the relevant line of the script):

HM_IsMenu = !HM_Opera && !HM_IE4M && (HM_DOM || HM_NS4 || HM_IE4 || HM_Konqueror);


HM_IsMenu = !HM_IE4M && (HM_DOM || HM_NS4 || HM_IE4 || HM_Konqueror || HM_Opera);

The NAB Internet Banking Web Site

One of the scripts used makes the incorrect assumption that all versions of Opera are as capable (or otherwise) as each other. In other words, they haven't allowed for the fact that later versions of Opera may improve as compared to earlier versions.

Before (fragment of the relevant line of the script [https://ib.national.com.au/nabib/scripts/menu002/menu.js]):




By the way, if you're thinking "only one character stops Opera from working?", you'd be right!

A slightly more detailed explanation: The applicable part of the script is identifying the browser in use and using the number (eg, 4 or 2) to load a script file particular to the identified browser, for example, "menu4.js" / "menu2.js". Number 4 relates to Opera browsers, version 6 or earlier. It does not support Opera 7 and later, hence the problems. Number 2 relates to Gecko browsers. These include Netscape 7, Mozilla, and Firefox. There are other numbers for other browsers.

Opera 7 and later are very much improved over Opera 6 and earlier. They're very much a "standards compliant" browser, just like the Gecko browsers are. Therefore, if Opera 7 or later are given the exact same menu code that the Gecko browsers get, it will work fine. That's what the fix is doing - turning the 4 (Opera 6 and earlier) into a 2 (Gecko / "standards compliant" browsers).