您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
CoCo点击方式添加控件!
/* * ============================================================================== * ******************************* CoCoClick v1.0.2 ******************************* ****************** Copyright (C) 2023 xiaohong2022 ***************** * ============================================================================== * */ // ==UserScript== // @name CoCoClick // @namespace http://tampermonkey.net/ // @version 1.0.2 // @description CoCo点击方式添加控件! // @author 小宏XeLa // @match *://coco.codemao.cn/editor/* // @icon https://coco.codemao.cn/favicon.ico // @grant GM_addStyle // @license GPL-3.0 // @run-at document-start // ==/UserScript== (function () { "use strict"; var dataTransfer = { setData(n, v) { this[n] = v; }, getData(n) { return this[n]; } }; setInterval(() => { document.querySelectorAll(`*[class*="WidgetList_widgetItem"]`).forEach((e) => { if (e.cococlick) return; e.cococlick = true; e.draggable = false; e.style.cursor = "pointer"; e.addEventListener("click", function () { var sen = document.querySelector(`*[class*="PreviewArea_main"]`); var x = sen.offsetLeft + sen.offsetWidth / 2; var y = sen.offsetTop + sen.offsetHeight / 2; var keys = Object.keys(e); var key = keys.find((e) => e.startsWith("__reactEventHandlers")); e[key].onDragStart({ target: e, dataTransfer, persist:() => true, clientX: x, clientY: y, x: x + 100, y }); var stage = document.querySelector(`*[class*="PreviewArea_stage"]`); stage[key].onDragOver({ preventDefault() { } }); stage[key].onDrop({ dataTransfer, persist:() => true, clientX: x + 142, clientY: y - 3, x: x + 100, y }); if (e.dataset.widgetType == "BRUSH_WIDGET" || e.dataset.widgetType == "ACTOR_WIDGET") { document.querySelectorAll(`*[data-widget-type="CANVAS_WIDGET"][id*="CANVAS_WIDGET"]`).forEach((en, _, array) => { function click(ew) { en[key].onDragEnter({ dataTransfer, persist: () => true, stopPropagation: () => true, }); stage[key].onDragOver({ preventDefault() { } }); en[key].onDrop({ dataTransfer, persist: () => true, stopPropagation: () => true, clientX: ew.clientX, clientY: ew.clientY, x: ew.x, y: ew.y }); stage[key].onDrop({ dataTransfer, persist: () => true, }); array.forEach(e => e.removeEventListener("click", e.cococlickfunc, false)); e[key].onDragEnd(); } en.cococlickfunc = click; en.addEventListener("click", click, false); }); } else { e[key].onDragEnd(); } }); }); }, 100); })();