setTimeout(target.mousedown, 200) doesn't seem to work. I can do setTimeout("target.mousedown()", 200), but this feels dirty.
What's the right way to do this?
You can use an anonymous function:
setTimeout(function () {
target.mousedown();
}, 200);
And you're right, you should always avoid using string parameters in setTimeout and setInterval functions.