Как загрузить MathJax только для браузеров, которые не поддерживают MathML - PullRequest
0 голосов
/ 27 октября 2018

У меня есть 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?Или, что-нибудь лучше, чем фрагмент кода выше, будет оценено.

...