Ich habe vor kurzem begonnen, MathJax in meiner Anwendung mit der Verwendung von JQuery zu verwenden, um einen Editor für Intuitionistische/Konstruktive Logik zu erstellen. Das Problem, mit dem ich konfrontiert bin, ist jedes Mal, wenn die Seite geladen wird und ich MathML mit JQuery injiziere, wird es nicht richtig gerendert. Hier ist der CodeEinfügen von MathML mit MathJax und JQuery
<math display="block" id="mathml-derivation">
<mrow class="beginning">
</mrow>
</math>
Dies ist Javascript
setTimeout(function() {
console.log("Started");
var $frac = document.createElement('mfrac');
$frac.innerHTML = '<mrow id="children' + parseInt(1) + '" class="conclusion">\
<mrow>\
<mi>b</mi>\
</mrow>\
</mrow>\
<mrow class="assumption">\
<mo>' + "\u22A2" + '</mo>\
<mrow class="goal clickable">\
<mi>a</mi>\
</mrow>\
</mrow>';
$("#mathml-derivation").append($frac);
console.log($frac);
MathJax.Hub.Typeset("mathml-derivation");
}, 1000);
Ich bin nicht sicher, was das Problem ist. Der Grund, warum ich eine setTimeout-Funktion habe, besteht darin, sicherzustellen, dass diese mindestens eine Sekunde nach dem Laden der Seite ausgeführt wird. Wenn ich es sofort oder über ein Ereignis lade, wird MathML nicht ordnungsgemäß gerendert. Ich habe einige andere Posts in StackOverflow verfolgt und gesagt, dass ich die '.Typeset'-Funktion verwenden soll, aber es funktioniert nicht richtig.
Als letzte Anmerkung verwende ich Chrome zu entwickeln und ich verwende MathJax für die Kompatibilität.
Können Sie ein vollständiges, in sich abgeschlossenes Beispiel als eingebettetes Snippet freigeben? –
@PeterKrautzberger danke für die Antwort, hier ist eine jsfiddle https://jsfiddle.net/rmqj0pwv/ ... Beachten Sie, wenn Sie die setTimeout von 1000 auf 0 dann funktioniert es, sonst ist es nicht – Ysrninja