A certain interface was previously built in a hurry and HTML code was littered with plenty
onclick="somefunction()" code. I re-factored all of that so that handlers were added on DOM.load; however, there was one nasty feature left in the code.
I had a table of 6 rows and button which that says “Add line”. Adding lines is easy: create the whole table row HTML on server, fetch that with XHR call and do
tbody.innerHTML += sRow. Actually, this was the code I used for IE and as soon as this is done, all the previously set event handlers went missing. Like they never existed.
Bottom line: changing
innerHTML property removes all late-bound event handlers and script on that piece of the page.
Solution was to get off my lazy fingers and type in proper DOM calls:
insertCell. Clean code and no browser branching. :)