共有 0 条评论

pjax下异步加载多说 – 小冉的博客

pjax下异步加载多说

以前写过一篇wordpress全站ajax下异步加载多说js,最近发现群友大萌的另一写法,特收集来共享给大家。
pjax下多说自然是加载不出来的。首先看一下原来多说的代码。

<script type="text/javascript">
var duoshuoQuery = {short_name:"eyblog"};
	(function() {
		var ds = document.createElement('script');
		ds.type = 'text/javascript';ds.async = true;
		ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
		ds.charset = 'UTF-8';
		(document.getElementsByTagName('head')[0] 
		 || document.getElementsByTagName('body')[0]).appendChild(ds);
	})();
	</script>

这里首先动态创建了一个div标签,然后加载多说的js。因为多说为了兼容,没有依赖jquery,所以用了原生js的appendChild方法。这里就是一个坑了,这个方法是异步的。所以在pjax下无法直接使用,因为后面还要动态设置多说的参数。

而jquery正好有个getScript方法很适合这里,在这个方法的回调里设置多说参数,就OK了

<script type="text/javascript">
              //异步加载多说js
              var duoshuoQuery = {short_name:"eyblog"};
              $.getScript("http://static.duoshuo.com/embed.js",function(){
                //代码高亮
                $('pre code').each(function(i, block) {
                      hljs.highlightBlock(block);
                }); 
                //创建dom
                var dus=$(".ds-thread");
                var dr=$("#ds-thread");
                if($(dus).length==1 && $(dr).length==0){
                    var el = document.createElement('div');
                    el.setAttribute('data-thread-key',$(dus).attr("data-thread-key"));//必选参数
                    el.setAttribute('data-url',$(dus).attr("data-url"));
                    DUOSHUO.EmbedThread(el);
                    $(dus).html(el);
                }
              })
            </script>
  • 用支付宝打我
  • 用微信打我

你可以像猪一样的生活,但你永远不会像猪一样快乐!!!

11条回应:“pjax下异步加载多说”

  1. TEE7说道:

    今天没事来逛逛

  2. 小轩说道:

    还是加载不出来呀。

  3. 傻逼说道:

    试试

  4. 勇哥说道:

    过来支持一下 太吊了!

  5. tpu薄膜说道:

    玩玩,反正不会怀孕[挤眼]

  6. 久久书屋说道:

    99书屋小说网,到此灌水一游

发表评论

电子邮件地址不会被公开。 必填项已用*标注