【问题标题】:MathJax: works in desktop browsers, but only when faking user-agent; works on mobile browsersMathJax:适用于桌面浏览器,但仅适用于伪造用户代理;适用于移动浏览器
【发布时间】:2016-06-01 23:16:59
【问题描述】:

所以,我有这个页面(Wordpress 博客的一部分), http://gnuradio.org/blog/filtering-time-series-data__elemental-building-blocks/应该包含我的 LaTeX 公式的渲染,就像:

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

遗憾的是,在没有强迫我的 firefox 声明其用户代理字符串是 iPhone 3 的情况下,公式永远不会被渲染; MathJax 显示它是典型的“初始化消息”,但早在这些出现之前,“原始”LaTeX 公式就消失了,再也没有呈现出来:

现在,奇怪的是:它也不适用于 Linux 下的 Chrome,而且我有一个朋友报告了 Safari/OS X 的相同问题,但在 Android 设备上使用 Firefox,它可以工作@ 987654324@.

Chrome on Android 也是如此。

所以,我尝试调试一些东西,但我没有超越以下内容:

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

根本不是网络开发人员,这几乎是我所取得的成就。因此,关于如何戳/用于调试此问题或解决我的问题的明确答案的提示同样受欢迎。

【问题讨论】:

  • 未来注意事项:cdn.mathjax.org 即将结束生命周期,请查看mathjax.org/cdn-shutting-down 了解迁移提示。
  • 谢谢你,@PeterKrautzberger

标签: javascript cross-platform user-agent mathjax


【解决方案1】:

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

你可以通过添加来克服这个问题

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

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

或者,试试disabling the full CloudFlare optimization

【讨论】:

  • 谢谢!我会和基础设施的负责人讨论这个问题,然后反馈;我意识到这一点的第一件事是 如果 cloudflare 破坏了一些东西,他们可能过度优化了页面。我开始搜索 cloudflare 和 mathjax;你对推荐here的解决方案有意见吗,即禁用完全优化?
  • 所以,完全优化被禁用了。我会接受你的回答,但会编辑“或者,禁用完整的 Cloudflare 优化”,因为我们就是这样做的,而且它奏效了。
  • “如果 cloudflare 破坏了一些东西,他们可能过度优化了页面”。这并不是真正的过度优化,而是它们对脚本标签的实现与浏览器所做的不完全兼容。当然,使用脚本的 MathJax 的代码是 8 年前开发的,当时情况有所不同,因此可以对 MathJax 进行现代化改造以使用更现代的技术(例如我在回答中建议的 textContent)。因此,MathJax 支持旧版浏览器的尝试导致了这个问题。
  • 我已经编辑了您添加的内容,以便它链接到您找到的描述(因为人们在寻找此答案时可能不会阅读 cmets)。
  • 谢谢!是的,添加该链接是正确的做法。感谢您的技术洞察力 - 当我真正为网站开发东西时是一种回归。看到不是 JavaScript 的
猜你喜欢
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
相关资源
最近更新 更多