Does disabling the element for 500ms sound like a reasonable solution to you? i'm not sure that disable makes much sense for non-buttons, but i think that buttons will make up 90%+ of use cases.
Instead of disabling the element for 500ms just ignore any other clicks on the element for 500ms. We often do this on elements with an onchange event. that way if the user changes items in a select too quickly (i.e. highlighting something in the list and then using their mousewheel) we avoid hitting the server until the selected item has been "rested on" for half a second or whatever we decide is the right timing. I think something like that could work for protecting against double-clicks. Another idea is to do what AVG does when it does an automatic update, (and when FF installs an addon). Have the button show a count down and when the count reaches zero either do the action or enable the button or both. How about that? Chris -- http://cjordan.us