繁体   English   中英

MathJax:可在桌面浏览器中使用,但仅在伪造用户代理时可用; 在移动浏览器上工作

[英]MathJax: works in desktop browsers, but only when faking user-agent; works on mobile browsers

因此,我有此页面(属于Wordpress博客的一部分), http://gnuradio.org/blog/filtering-time-series-data__elemental-building-blocks/ ,其中包含我的LaTeX公式的渲染图喜欢:

Linux上的Firefox,假装具有iPhone 3的用户代理字符串

当我配置桌面的Firefox假装其用户代理是在Android上运行的Firefox时,它的功能相同(有效!)

可悲的是,在不强迫我的Firefox声称其用户代理字符串是iPhone 3的情况下,该公式从未被渲染过。 MathJax展示了它是典型的“初始化消息”,但是在这些消息出现很久之前,“原始” LaTeX公式就消失了,并且永远不会再呈现:

Linux上的Firefox,不假装别人

现在,奇特的事情是:它在Linux下的Chrome上也不起作用,我有一个朋友报告了Safari / OS X的相同问题,但是在Android设备上的Firefox,它的工作原理很吸引人

Android上的Chrome浏览器也是如此

因此,我尝试调试东西,但是我没有超出以下范围:

  • 无论我在台式机上使用的是哪种用户代理,网络请求似乎都是相同的,响应也是如此,除了事实是,当工作正常时,cdn.mathjax.org会有一些流量(这是预期的,因为它加载webfonts)
  • 将渲染作业放入Mathjax HubQueue也无济于事。

根本不是一名网络开发人员,这几乎是我所学的范围。 因此,同样欢迎您使用有关戳戳/调试该问题的提示或解决我的问题的明确答案。

问题是您的页面正在加载用于修改页面中脚本元素的代码( http://gnuradio.org/cdn-cgi/nexp/dok3v=1613a3a185/cloudflare/rocket.js ,名称为cloudflarejs-rocketloader-0.11.5文件中的cloudflarejs-rocketloader-0.11.5可能是cloudflare在您不知情的情况下自动添加了此内容,但结果是页面中的脚本元素不再是浏览器实现的标准脚本DOM元素,而是由该脚本实现的替换。不幸的是,替换的行为与原始脚本元素不同,这导致MathJax无法读取数学运算(该数学运算存储在页面内的脚本元素中)。

您可能可以通过添加

<script>
MathJax = {
  AuthorInit: function () {
    MathJax.HTML.getScript = function (node) {return node.textContent}
  }
};
</script>

到加载MathJax.js本身的脚本之前的页面。

或者,尝试禁用完整的CloudFlare优化

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM