我有一个包含MathML的HTML。现在,我想指定,以便浏览器仅在本身不支持MathML的情况下加载MathJax。
截至2018年秋季,Firefox,Camino和Safari似乎都支持MathML,而大多数其他浏览器(尤其是Chrome,Internet Explorer和Opera)不支持MathML(请参阅Wikipedia's entry of MathML)。 MathJax可以作为一种解决方法来强制浏览器解释MathML,但是它有局限性,例如不(尚未?)支持rowpan / colspan(请参见the issue);此外,MathML在表达语义方面占优势,这对非可视浏览器或客户端至关重要。
因此,我想有条件地加载MathJax -仅在浏览器不支持MathML时。
我应该注意,如果只是简单地以整体方式加载MathJax,例如Firefox也使用MathJax重新呈现MathML,出于上述原因,我想避免这种情况(另外,浪费客户端资源)。不能为Firefox等加载或触发MathJax。
以下是我提供的 crude 解决方案的脚本,因此如果浏览器是Chrome(或类似版本),Konqueror或MSIE,则会加载Mathjax,请参阅“ Loading MathJax Dynamically “在Mathjax官方文档中。
<script>
if (navigator.userAgent.match(/((Chrom(e|ium)|Konqueror)\/?|MSIE \d)/)) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML";
document.getElementsByTagName("head")[0].appendChild(script);
}
</script>
但这有一些明显的局限性。它适用于上述浏览器的所有版本吗?无法保证此条件是否适用于其将来的版本。或者,这些浏览器可能会在其未来版本中开始支持MathML。不会考虑其他实际上不支持MathML的浏览器,等等。
例如,我想一个更好的方法是仅在浏览器不支持<math>
标签的情况下加载MathJax。
实现此条件加载MathJax的最佳方法是什么? 或者,比上面的代码段更好的东西都将受到赞赏。