您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Dokieli save button is currently disabled always with pods: https://github.com/linkeddata/dokieli/issues/390 -- this attempts to force it to be enabled.
// ==UserScript== // @name Enable Dokieli Save // @namespace http://tampermonkey.net/ // @version 2024-03-09 // @description Dokieli save button is currently disabled always with pods: https://github.com/linkeddata/dokieli/issues/390 -- this attempts to force it to be enabled. // @author https://snydergd.solidcommunity.net/profile/card#me // @match https://*.solidcommunity.net/* // @match https://*.inrupt.net/* // @icon https://www.google.com/s2/favicons?sz=64&domain=solidcommunity.net // @homepage https://gist.github.com/snydergd/ed530bc8ea20861628b1cfea3e58590c // @license CC0 // @grant none // ==/UserScript== (function() { 'use strict'; function waitForElm(selector, selector2) { const baseSelector = selector2 ? selector : null; if (baseSelector) selector = selector2; return new Promise(resolve => { if (document.querySelector(selector)) { return resolve(document.querySelector(selector)); } const observer = new MutationObserver(mutations => { mutations.forEach((mutation) => { if (!mutation.addedNodes) return; for (let i = 0; i < mutation.addedNodes.length; i++) { // do things to your newly added nodes here let node = mutation.addedNodes[i]; if (node.matches(selector) || node.querySelector(selector)) { observer.disconnect(); resolve(document.querySelector(selector)); } } }); }); // If you get "parameter 1 is not of type 'Node'" error, see https://stackoverflow.com/a/77855838/492336 observer.observe(baseSelector ? document.querySelector(baseSelector) : document.body, { childList: true, subtree: true, attributes: false, characterData: false }); }); } const loaded = () => new Promise(resolve => { let resolved = false; window.addEventListener("load", () => { resolved = true; if (!resolved) setTimeout(0, resolve); }); if (!resolved && (document.readyState === "complete" || document.readyState === "interactive")) { resolved = true; resolve(); } }); if ("DO" in window && "U" in window.DO) loaded().then(() => { console.log("loaded"); waitForElm("#document-menu", ".resource-save").then(x => { x.disabled = false; }); }); })();