您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Injector module for KameSame Open Framework
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/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);