如果不支持 svg,则回退到 html-css

Fallback to html-css if svg not supported

本文关键字:回退 html-css 如果不 不支持 svg 如果      更新时间:2023-09-26

我正在使用MathJax在浏览器中渲染mathml标记。我使用 TeX-AMS-MML_SVG 配置在 Chrome 中运行良好,但这在 IE8 中不起作用。

如果我切换到TeX-AMS-MML_HTMLorMML它在所有浏览器中都能正常工作。但是,SVG渲染看起来要好得多,因此在可能的情况下,我希望首选。

MathJax有什么内置的东西来支持这一点吗?似乎它可以从MML回退到HTML,但不能从SVG回退到HTML。我可以通过javascript检查SVG支持,但我希望MathJax配置中已经有一些我缺少的东西。

以下是有关常见配置的文档。我正在寻找类似MML_SVGorHTML配置的东西。

请参阅MathJax用户论坛上的讨论,其中描述了一种方法。 基本上

    <script type="text/x-mathjax-config">
    if (MathJax.Hub.Browser.isMSIE && (document.documentMode||0) < 9) {
      MathJax.Hub.Register.StartupHook("End Config",function () {
        var settings = MathJax.Hub.config.menuSettings;
        if (!settings.renderer) {settings.renderer = "HTML-CSS"}
      });
    }
    </script>

负责旧版本的IE,这是目前唯一不执行SVG的浏览器。

我目前正在测试此方法,该方法正在手动检查 svg 支持:

function supportsSvg() {
    return !!document.createElementNS && 
        !!document.createElementNS('http://www.w3.org/2000/svg', "svg").createSVGRect;
}
var mathjaxConfig = (supportsSvg()) ? 'TeX-AMS-MML_SVG' : 'MML_HTMLorMML';

然后你可以像往常一样将mathjaxConfig插入到url中:

"../MathJax.js?config=" + mathjaxConfig

您可以使用 Walter Zorn 的绘图库。它将所有内容呈现为 DIV。