duoshuo-ua.js 2.2 KB

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