您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
我常用的js代码库
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/479598/1292154/%E6%88%91%E7%9A%84%E5%B8%B8%E7%94%A8js%E4%BB%A3%E7%A0%81%E5%BA%93.js
// ==UserScript== // @name 我的常用js代码库 // @namespace http://tampermonkey.net/ // @version 0.6 // @description 我常用的js代码库 // @author zyb // @match http://*/* // @match https://*/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // ==/UserScript== class MyJSCodeLibrary { constructor() { } /** * 创建css样式 * @param {string} styleStr css样式 */ createStyleFuc(styleStr = "") { // 创建style节点 const style = document.createElement("style"); style.setAttribute("type", "text/css"); style.appendChild(document.createTextNode(styleStr)); document.head.appendChild(style); } /** * 异步获取dom节点 * @param {string} selector dom节点的选择器文本 * @param {number} time 间隔时间 * @returns */ getDomByIntervalAsyncFuc(selector, time = 100) { let dom = document.querySelectorAll(selector)[0]; let timeId = null; let times = 0; return new Promise((res) => { timeId = setInterval(() => { times++; if (dom || times > 10) { res(dom); clearInterval(timeId); } else { dom = document.querySelectorAll(selector)[0]; } }, time) }) } /** * 异步获取dom节点 * @param {string} selector dom节点的选择器文本 * @param {number} time 间隔时间 * @returns */ getDomListByIntervalAsyncFuc(selector, time = 100) { let dom = document.querySelectorAll(selector)[0]; let timeId = null; let times = 0; return new Promise((res) => { timeId = setInterval(() => { times++; if (dom.length || times > 10) { res(dom); clearInterval(timeId); } else { dom = document.querySelectorAll(selector); } }, time) }) } /** * 异步获取dom节点 * @param {string} selector dom节点的选择器文本 * @param {number} time 间隔时间 * @returns */ getDomByTimeoutAsyncFuc(selector = "", time = 2000) { return new Promise((res) => { setTimeout(() => { let dom = document.querySelectorAll(selector)[0]; res(dom); }, time) }) } /** * 异步获取dom节点 * @param {string} selector dom节点的选择器文本 * @param {number} time 间隔时间 * @returns */ getDomListByTimeoutAsyncFuc(selector = "", time = 2000) { return new Promise((res) => { setTimeout(() => { let dom = document.querySelectorAll(selector); res(dom); }, time) }) } /** * 针对返回值为html时的解析函数 * @param {Object} obj 请求头参数 * * { * "charset": "gbk", * "url": "https://www.88yydstxt426.com/s.php", * "headers": { * "content-type": "application/x-www-form-urlencoded", * }, * "body": "objectType=2&type=articlename&s=%C3%C3%C3%C3", * "method": "POST", * } */ decodeHtmlAsyncFuc(obj = {}) { const url = obj.url || ''; const headers = obj.headers || obj.header || { "content-type": "application/x-www-form-urlencoded", }; const body = obj.body || ''; const method = obj.method || 'GET'; const charset = obj.charset || 'utf-8'; let domArr = []; const decoder = new TextDecoder(charset); return fetch(url, { headers, body, method, }).then(response => { const reader = response.body.getReader(); return reader.read().then(function process({ done, value }) { if (done) { console.log('Stream finished'); return new Promise((res) => { res(domArr); }); } // 解码数据 const text = decoder.decode(value); const dom = document.createElement('div'); dom.innerHTML = text; domArr.push(dom); return reader.read().then(process); }); }); } } window.myJSCodeLibrary = new MyJSCodeLibrary()