typecho动态加载mathjax的思路及实现方法

## 0.序言

使用MathJax在网页中插入公式是非常流行的解决方案。只要使用`Tex`的语法就可以了,具体使用介绍可以参考:[MathJax](https://www.mathjax.org/),可是我们来考虑一下这种情况,一般除非是专业的科学相关博客才会每篇文章都有公式,个人博客很少会这样,通常整个网站就那么几篇,如果每次打开网页都去加载这个脚本的话就会有点浪费,所以本文探讨一下动态加载MathJax脚本的方法。

![typecho-mathjax.png][1]

## 1.判断是否需要加载

使用MathJax的网站中公式和符号是用`[区块公式]`或者`(内联公式)`方式来书写的,所以我们要做的也很简单,只要在输出的文章内容中判断有没有这种格式的文本就可以了。所以只要在 `post.php` 加入如下代码:

$GLOBALS[‘mathjax’] = strpos($this->content, ‘[‘) || strpos($this->content, ‘(‘);

这样就把文章中是否有mathjax的标记变量保存了下来,并且保存在全局变量中。

## 2.加载 MathJax.js

这里先推荐一个mathjax的cdn,[Staticfile CDN](http://staticfile.org/),国内的速度超快。

在原来加载mathjax.js的代码中修改如下(PS,我是在`footer.php`中加载的)




## 小结

经过测试,效果还可以,不过目前不清楚的是 `strpos` 这个函数是否会很影响性能,另外匹配那块也不算严谨,需要的自行完善一下。

作者BLOG:[LabQ](http://lab.yqc.im/)

[1]: https://www.typechodev.com/usr/uploads/2017/05/3790526280.png

上一篇 2017-04-25 上午1:08
下一篇 2017-04-30 上午9:37