// ==UserScript== // @name 扇贝自动读单词 // @namespace https://web.shanbay.com/* // @version 0.4 // @description 扇贝读单词 // @author yky // @match https://web.shanbay.com/* // @icon https://static.baydn.com/static/img/shanbay_favicon.png // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/513255/%E6%89%87%E8%B4%9D%E8%87%AA%E5%8A%A8%E8%AF%BB%E5%8D%95%E8%AF%8D.user.js // @updateURL https://update.greasyfork.icu/scripts/513255/%E6%89%87%E8%B4%9D%E8%87%AA%E5%8A%A8%E8%AF%BB%E5%8D%95%E8%AF%8D.meta.js // ==/UserScript== const loadLibs = function (callback) { const createScript = (url, resolve, reject) => { const element = document.createElement("script"); element.src = url; element.onload = () => { console.log(url + "加载完成"); resolve(); }; // 当资源加载完成时,解决Promise element.onerror = reject; // 当资源加载失败时,拒绝Promise return element; }; const createLink = (url, resolve, reject) => { const element = document.createElement("link"); element.rel = "stylesheet"; element.href = url; element.onload = () => { console.log(url + "加载完成"); resolve(); }; element.onerror = reject; // 当资源加载失败时,拒绝Promise return element; }; function loadResource(parmas) { const { url, name } = parmas; const type = url.split(".")[[url.split(".").length - 1]]; return new Promise((resolve, reject) => { let element; // 创建一个新的