I've been working on migrating MathOverflow to MathJax (from jsMath). One problem is that MathJax doesn't cache equations, which makes it slower for previews (where it has to re-render the same math many times). Here's a solution that I like much better than simply reducing the typeWatch wait time since it doesn't result in the annoying flickering of the math. You can permanently implement it by making it into a UserScript in the way KennyTM suggested.
wmdpreview = document.getElementById('wmd-preview');
wmdpreview2 = document.createElement("div");
wmdpreview.id = "wmd-preview-orig";
wmdpreview2.id = "wmd-preview"; // this is done to get the css right
document.getElementById("post-editor").insertBefore(wmdpreview2,wmdpreview);
$(wmdpreview).hide()
var running = false;
$("#wmd-input").typeWatch({highlight:false,wait:300,callback:function(){
if (!running){ // don't do anything if MathJax is still working on the last one
running = true;
MathJax.Hub.Queue(["Typeset",MathJax.Hub,wmdpreview],function(){wmdpreview2.innerHTML=wmdpreview.innerHTML;running=false});
}
}});
This makes the preview a bit less responsive (a lot less responsive if you're writing a long post with lots of math), but it's much better than being responsive but visually distracting. Since you're just injecting the rendered math into the preview div after it's been processed, you don't get the MathJax control panel when you right click on math. It also messes up the rendering if you're using MathML instead of HTML-CSS for some reason.
[feature-request]
too (restored that tag). $\endgroup$ – kennytm Aug 20 '10 at 15:44