Compatibility
Jump to navigation
Jump to search
MathJax Compatibility
MathJax works by first loading a web page, then, after that is complete, editing the special mark-up on the page to turn those marks into beautiful math expressions. The problem is that both Jmol and MathJax are competing for the AJAX processing after a page is loaded. Fortunately, MathJax was designed with this issue in mind, and there is a way of monitoring its progress. We need to start creating Jmol objects only after MathJax completes its job.
For compatibility with MathJax, make sure you:
1) are using dynamic loading of JSmol
-- use $(document).ready() to create all JSmol objects -- no <script> tags that use Jmol.getApplet() within the body
2) set the jQuery $(document).ready event to monitor MathJax loading and only start in on the AJAX until that is done. For example:
$(document).ready(function(){
loadJmol();
});
loadJmol = function() {
// we are checking evey 10 milliseconds
if (!$("#MathJax_Message")[0] || $('#MathJax_Message:contains("Loading")')[0]) {
setTimeout(loadJmol, 10);
return;
}
var Info = {
width: 300,
height: 300,
debug: false,
color: "0xFFFFFF",
addSelectionOptions: true,
use: "HTML5",
j2sPath: "./j2s",
jarPath: "./java",
jarFile: "JmolAppletSigned.jar",
isSigned: true,
script: "set antialiasDisplay;load $caffeine",
serverURL: "http://chemapps.stolaf.edu/jmol/jsmol/php/jsmol.php",
readyFunction: jmol_isReady,
disableJ2SLoadMonitor: false,
disableInitialConsole: true,
allowJavaScript: true
}
$("#appletplace").html(Jmol.getAppletHtml("jmol", Info));
}
...
<div id="appletplace"></div>