[多说]不本地化embed.js使多说评论显示UA

title.jpg

个性化 多说显示,让多说显示评论者的 UA,貌似教程很多。


比如: 我的那些事 - 多说回复后显示浏览器及操作系统信息(Useragent) 这里。


但是方案都是 本地化 embed.js 然后修改 embed.js 完成。

不想本地化 embed.js ,搜索了一下网络, 发现有不本地化 用 JS Hook 方式修改的办法,见
https://github.com/huhuime/make_duoshuo_show_ua

但是,根据这个修改后无效, 检测了多说的 embed.js 代码,发现是因为版本更新导致变量失效,修改 e.agent 为e.post.agent 即可。

简单整理如下。

在 多说 自己的 JS 导入后面的任意位置添加以下代码:

<script src="您的网站地址/ua-parser.min.js"></script>

<script type="text/javascript">
    if (typeof DUOSHUO !== 'undefined')hookDUOSHUO_tp();
    else $('[src="http://static.duoshuo.com/embed.js"]')[0].onload=hookDUOSHUO_tp;
    function hookDUOSHUO_tp(){
        var _D_post=DUOSHUO.templates.post
        DUOSHUO.templates.post=function (e,t){
            var rs=_D_post(e,t);
            var agent=e.post.agent;
            if(agent&&/^Mozilla/.test(agent))rs=rs.replace(/<\/div><p>/,show_ua(agent)+'</div><p>');
            return rs;
        }
    }
    function show_ua(string){
        console.log(string)
        $.ua.set(string);
        var sua=$.ua;
        if(sua.os.version=='x86_64')sua.os.version='x64';
        return '<span class="this_ua platform '+sua.os.name+'">'+sua.os.name+' '+sua.os.version+'</span><span class="this_ua browser '+sua.browser.name+'">'+sua.browser.name+'|'+sua.browser.version+'</span>';
    }
    </script>

完整教程可以见 : make_duoshuo_show_ua

效果展示可以在本日志下留言以观效果。

相对应的 CSS 可以在

https://github.com/easunlee/make_duoshuo_show_ua/blob/master/src/show.ua.css

获取。

ua-parser.min.js 下载可以在本站 http://static.easunlee.org/js/ua-parser.min.js

或者这里: https://github.com/faisalman/ua-parser-js