Greasy Fork is available in English.
ちょっとした機能
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/419955/889442/y_method.js
// ==UserScript==
// @name y_method
// @version 0.1.1
// @description ちょっとした機能
// @author y_kahou
// ==/UserScript==
/**
* スタイルを追加する
* @param id {string} - スタイルのID
* @param css {string} - css本体
*/
function addStyle(id, css) {
var style = document.createElement('style')
style.id = id
style.type = 'text/css'
style.textContent = css
document.querySelector('head').appendChild(style)
}
/**
* 対象までスクロールせずにクリックする
* @param selector {string} - 取得対象のセレクタ
*/
function click_(element) {
var x = window.scrollX, y = window.scrollY
element.click()
window.scrollTo(x, y)
}
/**
* 対象までスクロールせずにフォーカスする
* @param selector {string} - 取得対象のセレクタ
*/
function focus_(element) {
var x = window.scrollX, y = window.scrollY
element.focus()
window.scrollTo(x, y)
}
/**
* 対象のdomを取得できるまで取得を挑戦する
* @param selector {string} - 取得対象のセレクタ
* @param interval {number} - 次の挑戦までの時間ms
* @param repeat {number} - 繰り返し回数
*/
function repeatGetElements(selector, interval = 500, repeat = 60) {
return new Promise(function(resolve, reject) {
var cnt = 0
var it = setInterval(function() {
if (++cnt > 60) {
clearInterval(it)
reject("Could'n get " + selector)
}
var ret = document.querySelectorAll(selector)
if (ret.length > 0) {
clearInterval(it)
resolve(ret)
}
}, interval)
})
}
/**
* async関数内で使えるwait
*/
function wait(ms = 100) {
return new Promise(function(resolve, reject) {
setTimeout(() => resolve(), ms)
})
}
if (window.jQuery) (function($) {
/**
* 対象までスクロールせずにクリックする
*/
$.fn.click_ = function() {
click_(this[0])
return this
}
/**
* 対象までスクロールせずにフォーカスする
*/
$.fn.focus_ = function() {
focus_(this[0])
return this
}
})(window.jQuery);