我使用的是rails v6.0.3.2和ruby 2.7.1。我将文本放在ActionText富文本框中。当页面第一次加载时,我的mathjax不会被呈现。如果我刷新页面,它就会呈现出来。我需要(1)确保在页面第一次加载时渲染mathjax,或者(2)强制页面重新加载。显然,前者更好。
我在mathjax docs here中读到,我可以使用以下javascript (我放在我的application.js中)来实现前者(但它不起作用):
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML";
document.getElementsByTagName("head")[0].appendChild(script);
})();在我的application.html.haml视图中,我加载了mathjax CDN和一些代码来启用单美元符号表示法:
:plain
<!-- MathJax -->
<!-- This implements single $ as a delimiter -->
<!-- This MUST come before the CDN reference below -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']],
processEscapes: true}
});
</script>
<!-- Mathjax: latest CDN version -->
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML">
</script>如何启用mathjax的“动态”呈现,或者在页面首次加载时强制页面刷新?
发布于 2020-08-04 08:09:11
我的新答案
我想我找到了一个更好的答案来解决我的问题。在这个SO suggestion之后,我在更新之后(使用after_action回调)使rails缓存无效。现在,它似乎正在重新处理mathjax,而不会破坏已经存在的东西。
我的上一个答案
在阅读turbolinks documentation here时,我了解到可以在application.html.haml文件中插入以下元标记来强制页面重新加载:
<head>
...
<meta name="turbolinks-visit-control" content="reload">
</head>实际上这是haml版本:%meta{:content => "reload", :name => "turbolinks-visit-control"}/
的问题是,如果我编辑的页面上有预先存在的mathjax,分隔符就会被剥离,我必须在我的编辑中重新输入它们(这使它变得非常痛苦)。在我添加meta标签之前,这并没有发生。
我可以容忍这一点,但如果有人能提出更好的方法,我会洗耳恭听。
https://stackoverflow.com/questions/63224690
复制相似问题