The values passed to the MouseUpdate() proc are the components of a screen_loc string so you can easily update the positions of objects based on these values. For example:
client
MouseUpdate(tx, px, ty, py)
mob.crosshair.screen_loc = "[tx]:[px - 16],[ty]:[py - 16]"
This is done using two screen objects that capture mouse events. It doesn't use JavaScript so it should work for all clients.
This library is based on ideas from these forum posts. Hopefully this will become obsolete some day because there's a lot of room for improvement. It seems to work ok, even with the default tick_lag (though there's a substantial difference even when going from 10 fps to 15). However, if the player is moving the mouse while also moving (using the arrow keys) it doesn't seem to update nearly as well.
If I find anything, I'll make sure to share data obtained from such research and experimentation.