Greasy Fork is available in English.
JavaScript 库函数,以便调用
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/491971/1356529/libs.js
// ==UserScript==
// @name libs
// @description JavaScript 库函数,以便调用
// @namespace stapling/libs
// @version 0.1
// @grant none
// ==/UserScript==
// 等待
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
/**
* 等待指定元素出现后,执行回调
* @param selector 元素选择器。参考`document.querySelector`
* @param callback 需要执行的回调。传递的参数为目标元素
*/
const waitElem = (selector, callback) => {
const observer = new MutationObserver(() => {
const element = document.querySelector(selector)
if (element) {
callback(element)
observer.disconnect()
}
})
observer.observe(document.body, {
childList: true,
subtree: true,
})
}
/**
* 读取网站存储到 localStorage 的所有值
* @param excludeRegexp 不读取的键的正则。如 /^Hm_lvt/
* @return {string} JSON 文本
*/
const readLocalStorageValues = (excludeRegexp = undefined) => {
const result = {}
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i)
if (excludeRegexp && excludeRegexp.test(key)) {
continue
}
result[key] = localStorage.getItem(key)
}
return JSON.stringify(result)
}
/**
* 恢复数据到网站的 localStorage
* @param {string} json
*/
const restoreLocalStorageValues = (json) => {
const data = JSON.parse(json)
Object.keys(data).forEach(key => localStorage.setItem(key, data[key]))
}