I tried to figure out what the most portable Javascript way of doing a "Donate" button this is and wrote an article about it, here you go:
http://leo.bogert.de/2012/02/22/simple-bitcoin-donate-button/The code which can be copied directly from my article into your HTML should work with any browser: It uses no 3rd party libraries, and no fancy modern JS functions.
While it does not fully wire in to the Bitcoin-client, it is IMHO currently the only solution which will work for almost everyone.
The Bitcoin client which supports the bitcoin:// address format might not be widespread enough to use it yet.
Also, I remember from development of other apps which use custom addresses that its quite difficult to get the protocol registration working for all browsers which a user has installed.
I'm aware that it is not fully what was requested here. HOWEVER sometimes the most simple solutions are the best IMHO. So I'll just try to claim the bounty and see what happens