duoshuo-ua.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /* 多说UserAgent插件
  2. * 作者:Gerald <gera2ld@163.com>
  3. */
  4. duoshuoQuery.pluginUA=function(duoshuo_id){
  5. function parseAgent(a){
  6. var r={os:'山寨系统',br:'山寨浏览器',src:a},m;
  7. // 系统
  8. // Windows
  9. if(m=a.match(/Windows NT ?([^; )]*)/i)) {
  10. if(m[1]<5) r.os=m[0];
  11. else {
  12. r.os='Windows ';
  13. if(m[1]=='5.0') r.os+='2000';
  14. else if(m[1]=='5.1'||m[1]=='5.2') r.os+='XP';
  15. else if(m[1]=='6.0') r.os+='Vista';
  16. else if(m[1]=='6.1') r.os+='7';
  17. else if(m[1]=='6.2') r.os+='8';
  18. else if(m[1]=='6.3') r.os+='8.1';
  19. else if(m[1]=='10.0') r.os+='10';
  20. else r.os+'山寨版';
  21. }
  22. } else if(m=a.match(/Windows Phone OS ?([^; )]*)/i)) r.os=m[0];
  23. // Mac OS
  24. else if(m=a.match(/iPhone|iPod|iPad/i)) r.os=m[0];
  25. else if(m=a.match(/Mac OS X/i)) r.os=m[0];
  26. // Android
  27. else if(m=a.match(/Android ?([^; )]*)/i)) r.os=m[0];
  28. // Linux
  29. else if(m=a.match(/Linux/i)) r.os=m[0];
  30. // 浏览器
  31. // Opera
  32. if(m=a.match(/Opera Mini\/(\d+)/i)) r.br='Opera Mini '+m[1];
  33. else if(m=a.match(/OPR\/(\S+)/i)||a.match(/Presto\/.*?Version\/(\S+)/i))
  34. r.br='Opera '+m[1];
  35. // Maxthon
  36. else if(m=a.match(/Maxthon\/(\S+)/i)) r.br='Maxthon '+m[1];
  37. // Chrome
  38. else if(m=a.match(/Chrome\/(\S+)/i)) r.br='Chrome '+m[1];
  39. // Safari
  40. else if(m=a.match(/Safari\/(\S+)/i)) r.br='Safari '+m[1];
  41. // Firefox
  42. else if(m=a.match(/Firefox\/(\S+)/i)) r.br='Firefox '+m[1];
  43. // IE
  44. else if(m=a.match(/MSIE (\d+)\.0/i)) r.br='Internet Explorer '+m[1];
  45. else if(m=a.match(/Trident\/(\d+)\.0/i)) r.br='Internet Explorer '+(m[1]+4);
  46. return r;
  47. }
  48. function callBefore(local,e){
  49. local.agent=parseAgent(e.post.agent);
  50. local.webmaster=e.post.author_id==duoshuo_id;
  51. }
  52. function callAfter(local,e){
  53. var r=local.result,a=local.agent,
  54. i=r.indexOf('<div class="ds-comment-header">'),
  55. j=r.indexOf('</div>',i);
  56. local.result=r.slice(0,j)+
  57. '<div class=ds-os>'+a.os+'</div>'+
  58. '<div class=ds-browser>'+a.br+'</div>'+
  59. (local.webmaster?'<div class=ds-webmaster>天下第一帅的站长</div>':'')+
  60. r.slice(j);
  61. }
  62. return function(){
  63. var post=DUOSHUO.templates.post;
  64. DUOSHUO.templates.post=function(e){
  65. var local={};
  66. callBefore.call(this,local,e);
  67. local.result=post.call(this,e);
  68. callAfter.call(this,local,e);
  69. return local.result;
  70. }
  71. };
  72. };