User:Bluedeck/~/instant-reply/main.js

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。

function init() {
    const STOP_PARAM = 25_000
    let ctr_ut_link = 0
    let last_update = Date.now()
    const known_anchors = new Map()
    const init_interval = 0//setInterval(init_core, 250)
    setTimeout(init_core, 0)
    function init_core() {
        const ut_eles = get_utalk_anchors()
        ut_eles.forEach(ele => known_anchors.set(ele, "known"))
        ut_eles.filter(ele => !known_anchors.has(ele)).forEach(ele => insert_ui(ele))
        if (ut_eles.length !== ctr_ut_link) {
console.log(ut_eles.length, ctr_ut_link)
            ctr_ut_link = ut_eles.length
            last_update = Date.now()
        }
        else {
console.log(Date.now() - last_update, ctr_ut_link)
            if (Date.now() - last_update > STOP_PARAM) {
                clearInterval(init_interval)
            }
        }
    }
}

function insert_ui(anchor_ele) {
    anchor_ele.insertAdjacentHTML('afterbegin', '<div>37</div>')
}

function split_at_first(str, search) {
    const index = str.indexOf(search)
    if (index === -1) { return [str, ""] }
    else { return [str.substr(0, index), str.substr(index + search.length)] }
}

function get_utalk_anchors() {
    const t1 = [...document.querySelectorAll(".userlink")].filter(el => split_at_first(el.href.toLowerCase(), "/wiki/")[1].substr(0, 10) === "user_talk:")
    return t1
}

init()