簡體   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