您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Injector module for KameSame Open Framework
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/454425/1114503/KameSame%20Open%20Framework%20-%20Injector%20module.js
"use strict"; // ==UserScript== // @name KameSame Open Framework - Injector module // @namespace timberpile // @description Injector module for KameSame Open Framework // @version 0.0.0.1 // @copyright 2022+, Timberpile // @license MIT; http://opensource.org/licenses/MIT // ==/UserScript== (async (global) => { const ksof = global.ksof; await ksof.ready('document'); class Section { constructor(title) { this.html = document.createElement('div'); this.header = { html: ksof.pageInfo.on !== 'item_page' ? document.createElement('h2') : document.createElement('h3'), }; this.header.html.innerText = title; this.html.appendChild(this.header.html); } } class SettingsSection extends Section { constructor(title, onclick) { super(title); this.settingsButton = { html: document.createElement('i'), }; this.settingsButton.html.textContent = '⚙'; this.settingsButton.html.setAttribute('class', 'fa fa-gear'); this.settingsButton.html.setAttribute('style', 'cursor: pointer; vertical-align: middle; margin-left: 10px;'); if (onclick) { this.settingsButton.html.onclick = onclick; } this.header.html.append(this.settingsButton.html); } } const addSection = (section) => { switch (ksof.pageInfo.on) { case 'item_page': { document.querySelector('#app.kamesame #item')?.appendChild(section.html); } break; case 'review': { document.querySelector('.outcome')?.appendChild(section.html); } break; default: { return undefined; } break; } return section; }; ksof.Injector = { addSection: (title) => { return addSection(new Section(title)); }, addSettingsSection: (title, onclick) => { return addSection(new SettingsSection(title, onclick)); }, }; // Notify listeners that we are ready. // Delay guarantees include() callbacks are called before ready() callbacks. setTimeout(() => { ksof.setState('ksof.Injector', 'ready'); }, 0); })(window);