typecho动态加载mathjax的思路及实现方法
0.序言
使用MathJax在网页中插入公式是非常流行的解决方案。只要使用Tex
的语法就可以了,具体使用介绍可以参考:MathJax,可是我们来考虑一下这种情况,一般除非是专业的科学相关博客才会每篇文章都有公式,个人博客很少会这样,通常整个网站就那么几篇,如果每次打开网页都去加载这个脚本的话就会有点浪费,所以本文探讨一下动态加载MathJax脚本的方法。
1.判断是否需要加载
使用MathJax的网站中公式和符号是用[区块公式]
或者(内联公式)
方式来书写的,所以我们要做的也很简单,只要在输出的文章内容中判断有没有这种格式的文本就可以了。所以只要在 post.php
加入如下代码:
$GLOBALS['mathjax'] = strpos($this->content, '[') || strpos($this->content, '(');
这样就把文章中是否有mathjax的标记变量保存了下来,并且保存在全局变量中。
2.加载 MathJax.js
这里先推荐一个mathjax的cdn,Staticfile CDN,国内的速度超快。
在原来加载mathjax.js的代码中修改如下(PS,我是在footer.php
中加载的)
<?php if($GLOBALS['mathjax']):?>
<!--mathjax-->
<script type="text/javascript" src="http://cdn.staticfile.org/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<?php endif;?>
小结
经过测试,效果还可以,不过目前不清楚的是 strpos
这个函数是否会很影响性能,另外匹配那块也不算严谨,需要的自行完善一下。
作者BLOG:LabQ
版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。
评论已关闭