gpt4 book ai didi

javascript - MathJax:适用于桌面浏览器,但仅在伪造用户代理时有效;适用于移动浏览器

转载 作者:行者123 更新时间:2023-12-02 14:35:34 25 4
gpt4 key购买 nike

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

Firefox on Linux, pretending to have the User Agent string of an IPhone 3

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

遗憾的是,如果不强制我的 Firefox 声明其用户代理字符串是 iPhone 3 的用户代理字符串,则该公式永远不会被渲染; MathJax 显示了它是典型的“初始化消息”,但早在这些消息出现之前,“原始”LaTeX 公式就消失了,并且永远不会返回渲染:

Firefox on Linux, not pretending to be someone else

现在,奇怪的是:它在 Linux 下的 Chrome 上也不起作用,我有一个 friend 报告了 Safari/OS X 上的同样问题,但在 Android 设备上的 Firefox 上,它可以工作 like a charm .

Chrome on Android 也是如此。

所以,我尝试了调试,但还没有超出以下范围:

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

我根本不是一名网络开发人员,这就是我已经取得的进展。因此,关于如何查看/使用什么来调试此问题的提示或解决我的问题的明确答案同样受欢迎。

最佳答案

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

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

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

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

或者,尝试 disabling the full CloudFlare optimization .

关于javascript - MathJax:适用于桌面浏览器,但仅在伪造用户代理时有效;适用于移动浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37490198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com