我正在动态加载他们的CDN上的mathJax javascript库their CDN dynamically。这样我就可以将它应用到我同时加载的html部分页面。
目前,脚本将加载一次但不会在html部分页面更改时重新加载。我已尝试在CDN URL上使用时间戳并从DOM中删除脚本等。我整个下午都试图解决这个问题但没有成功。没有出现错误。
那么,还有什么我可以尝试使用每个新的html片段重新加载脚本吗?非常感谢任何建议。这是我的代码:
$scope.getLesson = function (x)
{
$scope.lessonMenu = false;
$scope.hiddenMenuLink = true;
x = x.replace(/[\s]/g, '');
$scope.parse = $parse(x)($scope);
var i = 0;
$.get("Lessons/" + x + ".html", function (data) {
// send the current html to view
$scope.currentLessonHTML = data.toString();
// destroy mathjax if existing
if (i > 1 && script1.parentNode != null) {
script1.parentNode.removeChild(script1);
script2.parentNode.removeChild(script2);
i = 0;
}
// loading the MathJax dynamically
var head = document.getElementsByTagName("head")[0];
var script1 = document.createElement("script");
var script2 = document.createElement("script");
var responsibleSibling = document.createElement("script");
var mathJax = "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" + "?nocache=" + new Date().getTime();
var mathJaxConfig = 'MathJax.Hub.Config({extensions: ["tex2jax.js"], jax: ["input/TeX", "output/HTML-CSS"],tex2jax: {inlineMath: [ ["$","$"], ["\\\\(","\\\\)"] ],displayMath: [ ["$$","$$"], ["\\[","\\]"] ],processEscapes: true},"HTML-CSS": { availableFonts: ["TeX"] }});';
script1.type = "text/x-mathjax-config";
script1[(window.opera ? "innerHTML" : "text")] = mathJaxConfig;
head.appendChild(script1);
script2.type = "text/javascript";
script2.src = mathJax;
head.appendChild(script2);
i++;
// apply new lesson
$scope.showLesson = true;
$scope.$apply();
});
}
答案 0 :(得分:1)
我终于弄明白了。该脚本正在重新加载,但它没有应用特定于Mathjax库的排版。该解决方案是一个内置函数,用于将排版排队到异步操作,如:
MathJax.Hub.Queue(["排版",MathJax.Hub]);
http://docs.mathjax.org/en/latest/typeset.html
感谢您的反馈。