У меня есть HTML, который содержит MathML.Теперь я хотел бы указать, чтобы браузер загружал MathJax только в том случае, если изначально не поддерживает MathML.
Фон
Начиная с осени 2018 года, Firefox, Camino и Safariпохоже, поддерживают MathML, тогда как большинство других браузеров, в частности Chrome, Internet Explorer и Opera, не поддерживают (см. статью MikML из Википедии).Тип MathJax работает как обходной путь, заставляющий браузер интерпретировать MathML, но у него есть ограничение, например, нет (пока?) Поддержки rowspan / colspan (см. , проблема );кроме того, MathML преобладает с точки зрения выражения семантики, что крайне важно для невизуальных браузеров или клиентов.
Итак, я хотел бы загрузить MathJax условно - только когда браузер неподдержка MathML.
Я должен отметить, что если MathJax просто загружается полностью, Firefox, например, тоже использует MathJax для повторного рендеринга MathML, чего я хочу избежать по вышеупомянутым причинам (плюс,растрата ресурсов на клиента).MathJax не должен быть загружен (или запущен) для Firefox и т. Д.
Мой показатель на данный момент
Вот сценарий как грубое решение, которое я придумала такMathjax загружается, если браузер является Chrome (или аналогичным), Konqueror или MSIE, ссылаясь на « Динамическая загрузка MathJax » в официальном документе 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, не рассматриваются и т. Д.
Я полагаю, что лучшим способом, например, было бы загружать MathJax, только если браузер не поддерживает тег <math>
.
Как лучше всего выполнить условную загрузку MathJax?Или, что-нибудь лучше, чем фрагмент кода выше, будет оценено.