1$.fn.barrage=function(opt){ 2 var _self=$(this); 3 var opts={data:[],row:3,time:2500,gap:15,ismouseoverclose:true}; 4 var settings = $.extend({},opts,opt); 5 var M = {},Obj = {}; 6 Obj.data = settings.data; 7 M.bgColors = ['#fc6976', '#8ed1fc', '#7bdcb5', '#fcb900', '#f78da7']; 8 M.barrageBox = $('<div id="danmu"></div>'); 9 M.timer = null; 10 11 var createView = function(){ 12 if (!Obj.data.length) return; 13 var randomIndex = Math.floor(Math.random() * M.bgColors.length); 14 var current = Obj.data[0]; 15 var hasAvatarOrName = !!((current.avatar && $.trim(current.avatar)) || (current.name && $.trim(current.name))); 16 var userHtml = hasAvatarOrName 17 ? '<a href="' + (current.now_user_link || '#') + '" class="img" target="_blank">' + (current.avatar || '') + (current.name || '') + '</a>' 18 : ''; 19 var ele = $('<li class="' + current.type + '" style="opacity:0;background-color:' + M.bgColors[randomIndex] + '">' + userHtml + (current.content || '') + '</li>'); 20 var str = Obj.data.shift(); 21 ele.animate({'opacity':1,'margin-bottom':settings.gap},1000); 22 M.barrageBox.append(ele); 23 Obj.data.push(str); 24 if(M.barrageBox.children().length > settings.row){ 25 M.barrageBox.children().eq(0).animate({'opacity':0},300,function(){ 26 $(this).css({'margin':0}).remove(); 27 }); 28 } 29 }; 30 31 M.mouseClose = function(){ 32 settings.ismouseoverclose && (function(){ 33 M.barrageBox.mouseover(function(){ 34 clearInterval(M.timer); 35 M.timer = null; 36 }).mouseout(function(){ 37 M.timer = setInterval(function(){ createView(); }, settings.time); 38 }); 39 })(); 40 }; 41 42 Obj.close = function(){ 43 M.barrageBox.remove(); 44 clearInterval(M.timer); 45 M.timer = null; 46 }; 47 48 Obj.start = function(){ 49 if(M.timer) return; 50 _self.append(M.barrageBox); 51 createView(); 52 M.timer = setInterval(function(){ createView(); }, settings.time); 53 M.mouseClose(); 54 }; 55 56 return Obj; 57}; 58 59function shouldDisableDanmu() { 60 return !!(window.acgDanmuSettings && acgDanmuSettings.is_mobile && acgDanmuSettings.is_single); 61} 62 63function fetchDanmuData() { 64 if (shouldDisableDanmu()) return; 65 66 $.ajax({ 67 type: 'post', 68 url: (window.acgDanmuSettings && acgDanmuSettings.ajax_url) ? acgDanmuSettings.ajax_url : '/wp-admin/admin-ajax.php', 69 data: {action:'acg_danmu'}, 70 dataType: 'json', 71 timeout: 10000, 72 success: function (msg) { 73 if (!Array.isArray(msg)) { 74 showNoDataNotice(); 75 return; 76 } 77 var contentCount = (window.acgDanmuSettings && acgDanmuSettings.content_count) ? acgDanmuSettings.content_count : 5; 78 var validData = msg.filter(function(item) { 79 return item && typeof item === 'object' && item.type && item.content; 80 }); 81 var displayData = validData.slice(0, contentCount); 82 if (!displayData.length) { 83 showNoDataNotice(); 84 return; 85 } 86 var displayRow = Math.min((window.acgDanmuSettings && acgDanmuSettings.row) ? acgDanmuSettings.row : 3, displayData.length); 87 initDanmu(displayData, displayRow); 88 }, 89 error: function () { 90 showNoDataNotice(); 91 } 92 }); 93} 94 95function initDanmu(data, rowCount) { 96 var Obj = $('body').barrage({ 97 data: data, 98 row: rowCount, 99 time: 2500, 100 gap: 15, 101 ismouseoverclose: true 102 }); 103 if ($('#danmu').length == 0) { 104 Obj.start(); 105 } 106} 107 108function showNoDataNotice() { 109 var defaultData = [{ 110 type: 'comment', 111 now_user_link: '#', 112 t: Date.now(), 113 avatar: '<img src="https://www.gravatar.com/avatar/?s=26" alt="" class="avatar avatar-26 photo" width="26" height="26" />', 114 name: '<span class="danmu-name">å¿åç¨æ·</span>', 115 content: '<span class="danmu-text"><span class="danmu-meta">ææ å¯å±ç¤ºå 容</span></span>' 116 }]; 117 initDanmu(defaultData, 1); 118} 119 120fetchDanmuData(); 121setInterval(function() { 122 if (shouldDisableDanmu()) { 123 $('#danmu').remove(); 124 return; 125 } 126 $('#danmu').remove(); 127 fetchDanmuData(); 128}, 30000);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.