admin

专业的网页弹幕

admin 分享 2022-11-23 413浏览 0
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/yaseng/jquery.barrager.js/dist/js/jquery.barrager.min.js"></script>
<style>
/* 评论弹幕 */
.barrage {
    position: fixed;
    right: -500px;
    display: inline-block;
    width: fit-content;
    z-index: 99
}
.barrage_box {
    display: flex;
    background-color: rgba(0, 0, 0, .5);
    padding-right: 8px;
    height: 40px;
    border-radius: 25px;
}
.barrage_box .portrait {
    display: inline-block;
    margin-top: 4px;
    margin-left: 4px;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    overflow: hidden;
}
.barrage_box .portrait img {
    width: 100%;
    height: 100%;
}
.barrage_box div.p a {
    display: inline-block;
    white-space: nowrap;
    max-width: 25rem;
    margin-right: 2px;
    font-size: 14px;
    line-height: 40px;
    margin-left: 10px;
    overflow: hidden;
    text-overflow: ellipsis;
    text-decoration: none;
}
.barrage_box div.p a:hover {
    text-decoration: underline;
}
</style>

书写markdown区域

<div id="loading"></div>

<script>
let ls = []
let Num = 0;

// 以下注释为twikoo api的返回格式
// 返回 Array,包含最新评论的
//   * id:           评论 ID
//   * url:          评论地址
//   * nick:         昵称
//   * mailMd5:      邮箱的 MD5 值,可用于展示头像
//   * link:         网址
//   * comment:      HTML 格式的评论内容
//   * commentText:  纯文本格式的评论内容
//   * created:      评论时间,格式为毫秒级时间戳
//   * avatar:       头像地址(0.2.9 新增)
//   * relativeTime: 相对评论时间,如 “1 小时前”(0.2.9 新增)
// 返回示例: [ // 从新到旧顺序
//   { id: '', url: '', nick: '', mailMd5: '', link: '', comment: '', commentText: '', created: 0 },
//   { id: '', url: '', nick: '', mailMd5: '', link: '', comment: '', commentText: '', created: 0 },
//   { id: '', url: '', nick: '', mailMd5: '', link: '', comment: '', commentText: '', created: 0 }
// ]
window.onload = () => {
    // 手机端显示效果不好,所以直接不让其显示
    if (1&&document.body.clientWidth > 768) {
        // 加载动画,将 /img/loading.svg 换成你的加载图片即可
        document.getElementById('loading').innerHTML = '<a href="/img/loading.svg" data-fancybox="gallery" data-caption="弹幕加载中..." data-thumb="/img/loading.svg"><img src="/img/loading.svg" data-lazy-src="/img/loading.svg" alt="弹幕加载中..." data-ll-status="loaded" class="entered loaded"></a><div class="img-alt is-center">弹幕加载中...</div>';
        let barrageTime = ''
        // 使用twikoo 自带api请求全站数据
        twikoo.getRecentComments({
            envId: 'https://twikoo.leonus.cn/', // 环境 ID
            // region: 'ap-guangzhou', // 环境地域,默认为 ap-shanghai,如果您的环境地域不是上海,需传此参数
            pageSize: 50, // 获取多少条,默认:10,最大:100
            includeReply: false // 是否包括最新回复,默认:false
        }).then((data) => {
            data.forEach(i => {
                if (i.avatar == undefined) i.avatar = 'https://cravatar.cn/avatar/d615d5793929e8c7d70eab5f00f7f5f1?d=mp'
                ls.push({
                    img: i.avatar, //图片 
                    info: i.nick + ':' + formatDanmaku(i.comment), //文字 
                    href: i.url, //链接 
                    close: false, //显示关闭按钮 
                    speed: 15, //延迟,单位秒,默认6 
                    // bottom: 70, //距离底部高度,单位px,默认随机 
                    color: '#fff', //颜色,默认白色 
                    old_ie_color: '#000000', //ie低版兼容色,不能与网页背景相同,默认黑色 
                })
            });
            setTimeout(() => { document.getElementById('loading').innerHTML = ''; }, 2000);
            setInterval(() => {
                if (Num >= ls.length) Num = 0
                $('body').barrager(ls[Num]);
                Num++;
            }, 1000); // 弹幕间隔时长
        }).catch(function(err) { console.error(err); });
    }else document.getElementById('loading').innerHTML = '<div class="note danger flat"><p>已关闭弹幕功能,请在电脑上查看。</p></div>' // 如果是手机则提醒
}

// 格式化评论
function formatDanmaku(str) {
    str = str.replace(/<\/*br>|[\s\uFEFF\xA0]+/g, '');
    str = str.replace(/<img.*?>/g, '[图片]');
    str = str.replace(/<a.*?>.*?<\/a>/g, '[链接]');
    str = str.replace(/<pre.*?>.*?<\/pre>/g, '[代码块]');
    str = str.replace(/<.*?>/g, '');
    return str
}
</script>


版权声明:
    “邓先生工作室”文章为自撰和网摘为一体,网摘文章及图片版权归原作者所有,转载本文请注明出处,请勿用于商务用途。如有侵犯您的权益,请及时联系toneydeng@qq.com予以删除!
发表评论