Greasy Fork 支持简体中文。

HTML introduction

Display HTML from luogu paste

// ==UserScript==
// @name         HTML introduction
// @namespace    http://tampermonkey.net/
// @version      v1.0.7
// @description  Display HTML from luogu paste
// @author       limesarine
// @match        https://luogu.com/user/*
// @match        https://luogu.com.cn/user/*
// @match        https://*.luogu.com/user/*
// @match        https://*.luogu.com.cn/user/*
// @license      © 2024 Limesarine. All rights reserved.
// @icon         https://www.google.com/s2/favicons?sz=64&domain=luogu.com.cn
// @grant        none
// ==/UserScript==

function deal(pre,id) {
    fetch('/paste/'+id+'?_contentOnly').then(d=>d.text()).then(t=>{
        let data=JSON.parse(t).currentData.paste.data;
        let e=document.getElementsByClassName('introduction marked')[0];
        e.innerHTML=e.innerHTML.replaceAll(pre+id,data);
    });
}
function deal_float(pre,id) {
    fetch('/paste/'+id+'?_contentOnly').then(d=>d.text()).then(t=>{
        let data=JSON.parse(t).currentData.paste.data;
        let e=document.getElementsByClassName('introduction marked')[0];
        data=`<div style=" position: fixed; left: 50%; transform: translateX(-50%); text-align: center; bottom: 0; background-color: rgba(0,0,0,0);">${data}</div>`;
        e.innerHTML=e.innerHTML.replaceAll(pre+id,data);
    });
}
function ddd(reg,pre,f)
{
    let matches=document.getElementsByClassName('introduction marked')[0].innerHTML.match(reg);
    if(matches)
        for(let i=0;i<matches.length;i++)
        {
            let x=matches[i];
            if(x.startsWith(pre) && x.slice(pre.length).length==8)
                f(pre,x.slice(pre.length));
        }
}
(function(){
    'use strict';
    let local=location.href.includes('luogu.com.cn')
    const observer=new MutationObserver(()=>{
        const introduction=document.getElementsByClassName("introduction marked")[0];
        if(introduction)
        {
            if(local)
            {
                let e=document.getElementsByClassName("introduction marked")[0];
                if(e.getAttribute('marked')){}
                else
                    e.innerHTML+=`<div style="border: 0; border-radius: 10px; position: fixed; left: 50%; transform: translateX(-50%); text-align: center; bottom: 0; background-color: #ccf"><p style="margin: 3px;">您现在在洛谷国内站,所以无法显示剪贴板中的HTML</p></div>`;
                e.setAttribute('marked',true);
            }
            else
            {
    			ddd(/LS\.PASTE\.(........)/g,'LS.PASTE.',deal);
    			ddd(/LS\.FLOAT\.PASTE\.(........)/g,'LS.FLOAT.PASTE.',deal_float);
            }
        }
    });
    observer.observe(document.documentElement,{childList:true,subtree:true});
})();