让InstantClick兼容多说、百度统计、百度分享丶MathJax等
in 干货分享 with 1 comment

让InstantClick兼容多说、百度统计、百度分享丶MathJax等

in 干货分享 with 1 comment

使用instantclick会大大提高网页加载速度但不会重新运行带有data-no-instant标记的JavaScript代码,而很多工具性软件,比如多说百度分享百度统计、MathJax、Google Analytics、Google Code Prettify等工具会在instantclick点击后失效,需要重新配置。

配置并不复杂,这些工具本身的代码不用做任何修改,该怎么放还怎么放。但在InstantClick.init();之前添加以下代码,部分代码来源于:阅微堂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script data-no-instant>
InstantClick.on('change'function(isInitialLoad) {
if (isInitialLoad === false) {
    // 多说
    if ($(".ds-thread").length == 1)
    DUOSHUO.EmbedThread(".ds-thread")
    // 多说最近评论小工具
    DUOSHUO.RecentCommentsWidget(".ds-recent-comments")
    // 百度分享
    window._bd_share_main.init()
    // 百度统计
    _hmt.push(['_trackPageview', location.pathname + location.search])
    //MathJax
    if (typeof MathJax !== 'undefined')
    MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
    //google analytics
    if (typeof ga !== 'undefined')  // support google analytics
    ga('send''pageview', location.pathname + location.search);
    //google code prettify
    if (typeof prettyPrint !== 'undefined'// support google code prettify
    prettyPrint();
}
});
InstantClick.init();
</script>

这段代码做了注释不需要的代码可以删除,通过InstantClick载入完网页会重新加载JS代码,通过直接的函数调用来实现多说、多说最近评论小工具、百度分享、百度统计、MathJax、Google Code Prettify、Google Analytics的重新运行。

Responses