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 公式的渲染,完全像:
当我将桌面的 Firefox 配置为假装其用户代理是 Android
上的 Firefox 运行 时,它的作用相同(有效!)
可悲的是,如果不强迫我的 firefox 声明其用户代理字符串是 IPhone 3 的字符串,公式就永远不会呈现; MathJax 显示它是典型的 "initialization messages",但在这些出现之前很久,"raw" LaTeX 公式就消失了,再也不会呈现:
现在,奇怪的是:它也不适用于 Linux 下的 Chrome,而且我有一个朋友报告了与 Safari/OS 相同的问题X 但在 Android 设备上使用 Firefox,它可以工作 like a charm。
Chrome on Android也是如此。
所以,我尝试调试了一些东西,但我还没有超出以下范围:
- 网络请求似乎是相同的,响应也是如此,无论我在桌面 PC 上使用什么用户代理,除了当一切正常时,cdn.mathjax.org 有一些流量(这是预期的,因为它加载了 webfonts)
- 将渲染作业放入 Mathjax
Hub
的 Queue
也无济于事。
根本不是 Web 开发人员,这就是我所达到的程度。因此,同样欢迎关于调试/使用什么来调试这个问题的提示或解决我的问题的明确答案。
问题是您的页面正在加载修改页面中脚本元素的代码(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本身的脚本之前到您的页面。
所以,我有这个页面(Wordpress 博客的一部分), http://gnuradio.org/blog/filtering-time-series-data__elemental-building-blocks/ ,其中 应该 包含我的 LaTeX 公式的渲染,完全像:
当我将桌面的 Firefox 配置为假装其用户代理是 Android
上的 Firefox 运行 时,它的作用相同(有效!)可悲的是,如果不强迫我的 firefox 声明其用户代理字符串是 IPhone 3 的字符串,公式就永远不会呈现; MathJax 显示它是典型的 "initialization messages",但在这些出现之前很久,"raw" LaTeX 公式就消失了,再也不会呈现:
现在,奇怪的是:它也不适用于 Linux 下的 Chrome,而且我有一个朋友报告了与 Safari/OS 相同的问题X 但在 Android 设备上使用 Firefox,它可以工作 like a charm。
Chrome on Android也是如此。
所以,我尝试调试了一些东西,但我还没有超出以下范围:
- 网络请求似乎是相同的,响应也是如此,无论我在桌面 PC 上使用什么用户代理,除了当一切正常时,cdn.mathjax.org 有一些流量(这是预期的,因为它加载了 webfonts)
- 将渲染作业放入 Mathjax
Hub
的Queue
也无济于事。
根本不是 Web 开发人员,这就是我所达到的程度。因此,同样欢迎关于调试/使用什么来调试这个问题的提示或解决我的问题的明确答案。
问题是您的页面正在加载修改页面中脚本元素的代码(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本身的脚本之前到您的页面。