Fix a number of issues found by running IE8.

This commit is contained in:
Davide P. Cervone 2015-12-23 19:40:41 -05:00
parent 46676fd233
commit ae8ae0cb72
6 changed files with 19 additions and 13 deletions

View File

@ -1042,7 +1042,7 @@ MathJax.HTML = {
Element: function (type,def,contents) {
var obj = document.createElement(type), id;
if (def) {
if (def.style) {
if (def.hasOwnProperty("style")) {
var style = def.style; def.style = {};
for (id in style) {if (style.hasOwnProperty(id))
{def.style[id.replace(/-([a-z])/g,this.ucMatch)] = style[id]}}

View File

@ -148,7 +148,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
// tip.style.filter = CHTML.config.styles["#MathJax_CHTML_Tooltip"].filter;
if (this === currentTip) return;
tip.style.left = x+"px"; tip.style.top = y+"px";
tip.innerHTML = '<mjx-chtml><mjx-math></mjx-math></mjx-chtml>';
tip.innerHTML = '<span class="mjx-chtml"><span class="mjx-math"></span></span>';
CHTML.getMetrics(jax);
try {this.data[1].toCommonHTML(tip.firstChild.firstChild)} catch(err) {
if (!err.restart) throw err;

View File

@ -306,6 +306,11 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
}
});
//
// Just use default toCommonHTML for EI8
//
if (!document.createElementNS) delete MML.menclose.prototype.toCommonHTML;
MathJax.Hub.Startup.signal.Post("CommonHTML menclose Ready");
MathJax.Ajax.loadComplete(CHTML.autoloadDir+"/menclose.js");
});

View File

@ -506,7 +506,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
// Propagate full-width equations, and reserve room for equation plus label
//
node.style.width = this.CHTML.pwidth = "100%";
node.style.minWidth = this.CHTML.mwidth = CHTML.Em(tw);
node.style.minWidth = this.CHTML.mwidth = CHTML.Em(Math.max(0,tw));
}
});
@ -549,7 +549,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
var row = []; options.rows.push(row);
var label = CHTML.Element("mjx-label"); options.labels.push(label);
this.CHTMLaddChild(label,0,options);
options.labeled = true;
if (this.data[0]) options.labeled = true;
//
// Add the cells to the row
//

View File

@ -121,6 +121,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
this.CHTMLaddLine(stack,start,[],state,ENDVALUES,broken);
node.style.width = stack.style.width = this.CHTML.pwidth = "100%";
this.CHTML.mwidth = CHTML.Em(this.CHTML.w);
this.CHTML.isMultiline = parent.CHTML.isMultiline = true;
stack.style.verticalAlign = CHTML.Em(state.d - this.CHTML.d);

View File

@ -828,7 +828,7 @@
var c = this.unicodeChar(n);
var HDW = this.getHDW(c,unknown.className);
// ### FIXME: provide a means of setting the height and depth for individual characters
unknown[n] = [.8,.2,HDW.w,0,HDW.w,{a:(HDW.h-HDW.d)/2, h:HDW.h, d:HDW.d}];
unknown[n] = [.8,.2,HDW.w,0,HDW.w,{a:Math.max(0,(HDW.h-HDW.d)/2), h:HDW.h, d:HDW.d}];
unknown[n].c = c;
},
styledText: function (variant,text) {
@ -842,7 +842,7 @@
var unknown = this.STYLEDTEXT[id];
if (!unknown["_"+text]) {
var HDW = this.getHDW(text,variant.className||"",style);
unknown["_"+text] = [.8,.2,HDW.w,0,HDW.w,{a:(HDW.h-HDW.d)/2, h:HDW.h, d:HDW.d}];
unknown["_"+text] = [.8,.2,HDW.w,0,HDW.w,{a:Math.max(0,(HDW.h-HDW.d)/2), h:HDW.h, d:HDW.d}];
unknown["_"+text].c = text;
}
return {type:"unknown", n:"_"+text, font:unknown, style:style, rscale:variant.rscale};
@ -1031,7 +1031,7 @@
ext.style.marginTop = CHTML.Em(-c-EFUZZ/2/k);
var TEXT = ext.textContent, text = "\n"+TEXT;
while (--n > 0) TEXT += text;
ext.firstChild.textContent = TEXT;
ext.textContent = TEXT;
node.appendChild(ext);
if (delim.mid) {
node.appendChild(mid);
@ -1089,7 +1089,7 @@
right.style.marginleft = CHTML.Em(-rbox.l);
var TEXT = ext.textContent, text = TEXT;
while (--n > 0) TEXT += text;
ext.firstChild.textContent = TEXT;
ext.textContent = TEXT;
node.appendChild(ext);
if (delim.mid) {
node.appendChild(mid);
@ -1516,7 +1516,7 @@
BBOX.mwidth = this.data[0].CHTML.mwidth;
style.width = "100%";
} else if (BBOX.pwidth) {
BBOX.mwidth = BBOX.w;
BBOX.mwidth = CHTML.Em(BBOX.w);
style.width = "100%";
} else if (BBOX.w < 0) {
style.width = "0px";
@ -1526,7 +1526,7 @@
// ### FIXME: adjust for width, height, vertical-align?
for (var i = 0, m = CHTML.BBOX.styleAdjust.length; i < m; i++) {
var data = CHTML.BBOX.styleAdjust[i];
if (style[data[0]]) BBOX.adjust(style[data[0]],data[1],data[2],data[3]);
if (data && style[data[0]]) BBOX.adjust(style[data[0]],data[1],data[2],data[3]);
}
},
@ -1573,7 +1573,7 @@
if (!values.weight && values.mathvariant.match(/bold/)) values.weight = "bold";
if (!values.style && values.mathvariant.match(/italic/)) values.style = "italic";
this.CHTMLvariant = {fonts:[], noRemap:true, cache:{}, style: {
"font-family":values.family, "font-weight":values.weight, "font-style":values.style
"font-family":values.family, "font-weight":values.weight||"normal", "font-style":values.style||"normal"
}};
return;
}
@ -1700,7 +1700,7 @@
if (!node.getAttribute("role")) node.setAttribute("role","math");
if (this.CHTML.pwidth) {
node.parentNode.style.width = this.CHTML.pwidth;
node.parentNode.style.minWidth = this.CHTML.mwidth;
node.parentNode.style.minWidth = this.CHTML.mwidth||CHTML.Em(this.CHTML.w);
} else if (!this.isMultiline && this.Get("display") === "block") {
var values = this.getValues("indentalignfirst","indentshiftfirst","indentalign","indentshift");
if (values.indentalignfirst !== MML.INDENTALIGN.INDENTALIGN) values.indentalign = values.indentalignfirst;
@ -1984,7 +1984,7 @@
bbox.w = bbox.r = w; bbox.h = bbox.t = h; bbox.d = bbox.b = d; bbox.l = 0;
if (w < 0) {node.style.marginRight = CHTML.Em(w); w = 0}
node.style.width = CHTML.Em(w);
node.style.height = CHTML.Em(h+d);
node.style.height = CHTML.Em(Math.max(0,h+d));
if (d) node.style.verticalAlign = CHTML.Em(-d);
this.CHTMLhandleBBox(node);
this.CHTMLhandleColor(node);