Have MathJax.js set up MathPlayer if it can (since delaying that is what causes crashes). Also make preview be hidden to prevent screen readers from seeing them once the math is typeset.

This commit is contained in:
Davide P. Cervone 2012-01-22 17:40:46 -05:00
parent 3f8f21a3be
commit b02429e1ad
18 changed files with 58 additions and 30 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1621,7 +1621,10 @@ MathJax.Hub = {
//
result = MathJax.OutputJax[jax.outputJax].Process(script,state);
script.MathJax.state = STATE.PROCESSED; state.i++;
if (script.MathJax.preview) {script.MathJax.preview.style.display = "none"}
if (script.MathJax.preview) {
script.MathJax.preview.style.display = "none";
script.MathJax.preview.style.visibility = "hidden"; // hide from screen readers
}
//
// Signal that new math is available
//
@ -1673,7 +1676,10 @@ MathJax.Hub = {
});
}
script.parentNode.insertBefore(error,script);
if (script.MathJax.preview) {script.MathJax.preview.style.display = "none"}
if (script.MathJax.preview) {
script.MathJax.preview.style.display = "none";
script.MathJax.preview.style.visibility = "hidden"; // hide from screen readers
}
this.lastError = err;
},
@ -2345,6 +2351,20 @@ MathJax.Hub.Startup = {
MSIE: function (browser) {
browser.isIE9 = !!(document.documentMode && (window.performance || window.msPerformance));
MathJax.HTML.setScriptBug = !browser.isIE9 || document.documentMode < 9;
var MathPlayer = false;
try {new ActiveXObject("MathPlayer.Factory.1"); MathPlayer = true} catch(err) {}
if (MathPlayer) {
var mathplayer = document.createElement("object");
mathplayer.id = "mathplayer"; mathplayer.classid = "clsid:32F66A20-7614-11D4-BD11-00104BD3F987";
document.getElementsByTagName("head")[0].appendChild(mathplayer);
document.namespaces.add("m","http://www.w3.org/1998/Math/MathML");
browser.hasMathPlayer = true;
if (document.readyState && (document.readyState === "loading" ||
document.readyState === "interactive")) {
document.write('<?import namespace="m" implementation="#MathPlayer">');
browser.mpImported = true;
}
}
}
});
HUB.Browser.Select(MathJax.Message.browsers);

View File

@ -133,7 +133,7 @@
//
// Remove selections, remove hover fades
//
if (ME.msieEventBug) {event = window.event}
if (ME.msieEventBug) {event = window.event || event}
EVENT.ClearSelection(); HOVER.ClearHoverTimer();
if (jax.hover) {
if (jax.hover.remove) {clearTimeout(jax.hover.remove); delete jax.hover.remove}

View File

@ -599,6 +599,7 @@
//
if (data.preview) {
data.preview.style.display = "none";
data.preview.style.visibility = "hidden"; // hide from screen readers
script.MathJax.preview = data.preview;
delete data.preview;
}

View File

@ -97,11 +97,17 @@
//
// Insert data needed to use MathPlayer for MathML output
//
var mathplayer = document.createElement("object");
mathplayer.id = "mathplayer"; mathplayer.classid = "clsid:32F66A20-7614-11D4-BD11-00104BD3F987";
document.getElementsByTagName("head")[0].appendChild(mathplayer);
document.namespaces.add("mjx","http://www.w3.org/1998/Math/MathML");
document.namespaces.mjx.doImport("#mathplayer");
if (!HUB.Browser.hasMathPlayer) {
var mathplayer = document.createElement("object");
mathplayer.id = "mathplayer"; mathplayer.classid = "clsid:32F66A20-7614-11D4-BD11-00104BD3F987";
document.getElementsByTagName("head")[0].appendChild(mathplayer);
document.namespaces.add("m","http://www.w3.org/1998/Math/MathML");
HUB.Browser.hasMathPlayer = true;
}
if (!HUB.Browser.mpImported) {
document.namespaces.m.doImport("#mathplayer");
HUB.Browser.mpImported = true;
}
} catch (err) {
//
// If that fails, give an alert about security settings
@ -231,7 +237,7 @@
container.ondblclick = EVENT.DblClick;
}
},
postTranslate: function (state) {
if (this.forceReflow) {
// Firefox messes up some mtable's when they are dynamically created
@ -392,7 +398,7 @@
// Create a MathML element
//
NativeMMLelement: function (type) {
var math = (isMSIE ? document.createElement("mjx:"+type) :
var math = (isMSIE ? document.createElement("m:"+type) :
document.createElementNS(nMML.MMLnamespace,type));
math.isMathJax = true;
return math;

View File

@ -320,6 +320,7 @@
//
if (data.preview) {
data.preview.style.display = "none";
data.preview.style.visibility = "hidden"; // hide from screen readers
script.MathJax.preview = data.preview;
delete data.preview;
}