appendShadow

💜

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// jshint esversion: 6
// eslint-disable-next-line
// ==UserScript==
// @name         appendShadow
// @namespace    https://dniness.github.io/
// @version      0.03
// @description  💜
// @author       Dniness
// @match        *://*/*
// @icon         data:image/svg+xml,<svg width='64' height='64' fill='none' xmlns='http://www.w3.org/2000/svg'><circle cx='32' cy='32' r='32' fill='darkgray'/></svg>
// @grant        none
// @run-at       document-body
// @license      MPL2.0
// ==/UserScript==

 

(document.appendShadow=(func,name)=>{
    'use strict';
    const mode = name?'open':'closed';
    [,name,func]=(func+'').match(/([^ =]+)[^{]+\{(.+)\}$/);
    name = name.replace(/([A-Z])/g,"-$1").toLowerCase();
    customElements.define(name, class extends HTMLElement {
        constructor() {
            super();
            new Function(func).call(this.attachShadow({mode}));
        }
    })
    document.body.appendChild(document.createElement(name));
})(exampleMonkeyShadow=>{this.appendChild(document.createElement('h2'))});