Like I said before, to use form-elements in a proper way, you need to define a form. The problem with this, as you showed, is that MSIE has a bug when it comes to forms inside tablecells: it puts linebreaks before the selector...
It goes even further, MSIE even puts linebreaks before the table if you put the <form>-tag outside the table.
These bugs from MSIE (it's not a bug in other browsers) should be known by most website-developers because they are indeed very dodgy...
The workaround is to define the form outside the tablecell, but inside the table, so instead of:
<table><tbody><tr><td><form><select></select></form></td></tr></tbody></table>
use:
<table><tbody><form><tr><td><select></select></td></tr></form></tbody></table>
OR
Because you don't define a form, you must search for the form-elements with a script. Just like Guido does in msgplusjs.js. The problem with that is that the names from MSIE and Mozilla based browsers for the layerstructure of a document is different. And the script only checks for the MSIE based names, so that's why Mozilla based browsers return "undefined" and thus the script can't execute further.
The workaround for this is easy:
I've seen in msgplusjs.js that there is a very complicated and unneeded script being used to catch the select-object (with all the problems it brings).
This can be solved by:
Delete the function "GFDD_findObj" and "GFDD_jumpMenuGo", these are not needed because in the html-code the object can be returned directly by the use of the "this"-word like so:
<SELECT class=language onchange="GFDD_jumpMenu(this);" size=1>
So, in short: choose one of the two methods:
1) use
<table><tbody><form><tr><td><select></select></td></tr></form></tbody></table> and leave the javascript and everything as it is.
2) don't use the <form>-tag and change the select-tag to:
<SELECT class=language onchange="GFDD_jumpMenu(this);" size=1> and then you can even remove those two functions (
GFDD_findObj and
GFDD_jumpMenuGo) in the script.
I hope this helps