functions.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. function getBaseUrl() {
  2. var ishttps = 'https:' == document.location.protocol ? true : false;
  3. var url = window.location.host;
  4. if (ishttps) {
  5. url = 'https://' + url;
  6. } else {
  7. url = 'http://' + url;
  8. }
  9. return url;
  10. }
  11. function getWsBaseUrl() {
  12. var ishttps = 'https:' == document.location.protocol ? true : false;
  13. var url = window.location.host;
  14. if (ishttps) {
  15. url = 'wss://' + url;
  16. } else {
  17. url = 'ws://' + url;
  18. }
  19. return url;
  20. }
  21. function notify(title, options, callback) {
  22. // 先检查浏览器是否支持
  23. if (!window.Notification) {
  24. return;
  25. }
  26. var notification;
  27. // 检查用户曾经是否同意接受通知
  28. if (Notification.permission === 'granted') {
  29. notification = new Notification(title, options); // 显示通知
  30. } else {
  31. var promise = Notification.requestPermission();
  32. }
  33. if (notification && callback) {
  34. notification.onclick = function(event) {
  35. callback(notification, event);
  36. }
  37. }
  38. }
  39. var titleTimer,titleNum=0;
  40. var originTitle = document.title;
  41. function flashTitle() {
  42. titleNum++;
  43. if (titleNum == 3) {
  44. titleNum = 1;
  45. }
  46. if (titleNum == 1) {
  47. document.title = '【】' + originTitle;
  48. }
  49. if (titleNum == 2) {
  50. document.title = '【你有一条消息】' + originTitle;
  51. }
  52. titleTimer = setTimeout("flashTitle()", 500);
  53. }
  54. var faceTitles = ["[微笑]", "[嘻嘻]", "[哈哈]", "[可爱]", "[可怜]", "[挖鼻]", "[吃惊]", "[害羞]", "[挤眼]", "[闭嘴]", "[鄙视]", "[爱你]", "[泪]", "[偷笑]", "[亲亲]", "[生病]", "[太开心]", "[白眼]", "[右哼哼]", "[左哼哼]", "[嘘]", "[衰]", "[委屈]", "[吐]", "[哈欠]", "[抱抱]", "[怒]", "[疑问]", "[馋嘴]", "[拜拜]", "[思考]", "[汗]", "[困]", "[睡]", "[钱]", "[失望]", "[酷]", "[色]", "[哼]", "[鼓掌]", "[晕]", "[悲伤]", "[抓狂]", "[黑线]", "[阴险]", "[怒骂]", "[互粉]", "[心]", "[伤心]", "[猪头]", "[熊猫]", "[兔子]", "[ok]", "[耶]", "[good]", "[NO]", "[赞]", "[来]", "[弱]", "[草泥马]", "[神马]", "[囧]", "[浮云]", "[给力]", "[围观]", "[威武]", "[奥特曼]", "[礼物]", "[钟]", "[话筒]", "[蜡烛]", "[蛋糕]"];
  55. function placeFace() {
  56. var faces=[];
  57. for(var i=0;i<faceTitles.length;i++){
  58. faces[faceTitles[i]]="/static/images/face/"+i+".gif";
  59. }
  60. return faces;
  61. }
  62. function replaceContent (content) {// 转义聊天内容中的特殊字符
  63. var faces=placeFace();
  64. var html = function (end) {
  65. return new RegExp('\\n*\\[' + (end || '') + '(pre|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*', 'g');
  66. };
  67. content = (content || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
  68. .replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/'/g, '&#39;').replace(/"/g, '&quot;') // XSS
  69. .replace(/face\[([^\s\[\]]+?)\]/g, function (face) { // 转义表情
  70. var alt = face.replace(/^face/g, '');
  71. // return '<img alt="' + alt + '" title="' + alt + '" src="' + faces[alt] + '">';
  72. return '<span class="em ' + alt.slice(1, alt.length-1) + '" ></span>'
  73. })
  74. .replace(/img\[([^\s\[\]]+?)\]/g, function (face) { // 转义图片
  75. console.log(face);
  76. var src = face.replace(/^img\[/g, '').replace(/\]/g, '');
  77. console.log(src);
  78. return '<img onclick="bigPic(src,true)" src="' + src + '" style="max-width: 100%"/></div>';
  79. })
  80. .replace(/\[([^\s\[\]]+?)\]+link\[([^\s\[\]]+?)\]/g, function (face) { // 转义超链接
  81. var text = face.replace(/link\[.*?\]/g, '').replace(/\[|\]/g, '');
  82. var src = face.replace(/^\[([^\s\[\]]+?)\]+link\[/g, '').replace(/\]/g, '');
  83. return '<a href="#" onclick="window.open(\'' + src + '\')" />【'+text+'】</a>';
  84. })
  85. .replace(html(), '\<$1 $2\>').replace(html('/'), '\</$1\>') // 转移HTML代码
  86. .replace(/\n/g, '<br>') // 转义换行
  87. return content;
  88. }
  89. function bigPic(src,isVisitor){
  90. if (isVisitor) {
  91. window.open(src);
  92. return;
  93. }
  94. // $("#bigPic img").attr("src",src);
  95. // $("#bigPic").show();
  96. // $("#bigPic img").click(function(){
  97. // $("#bigPic").hide();
  98. // });
  99. }
  100. function filter (obj){
  101. var imgType = ["image/jpeg","image/png","image/jpg","image/gif"];
  102. var filetypes = imgType;
  103. var isnext = false;
  104. for (var i = 0; i < filetypes.length; i++) {
  105. if (filetypes[i] == obj.type) {
  106. return true;
  107. }
  108. }
  109. return false;
  110. }
  111. function sleep(time) {
  112. var startTime = new Date().getTime() + parseInt(time, 10);
  113. while(new Date().getTime() < startTime) {}
  114. };