PageSourceSearch

https://www.aikansy.com/wp-content/plugins/ACG-Danmu-fixed-db-index/js/danmu.js?ver=1.1.0

js aikansy.com collected 2026-10-10 00:46:11 UTC 4,404 bytes, 128 lines download raw bytes

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.