Chrome 实现了一个获取所有监听者的api(包括匿名函数声明的)。通过这个 api 可以轻松删除事件监听。
将知网所有限制复制的监听者全部删除,实现自由复制文本。

(function copyTextFromCNKI() {
    const listenerNames = {
        'contextmenu': document,
        'keydown': document,
        'mouseup': document.querySelector('div.content')
    }
    for (const[listenerName, ele] of Object.entries(listenerNames)) {
        const listeners_arr = window.getEventListeners(ele)[listenerName] 
        listeners_arr?.forEach((obj) => {
            const listener = obj?.listener
            listener && (ele.removeEventListener(listenerName, listener) && ele.removeEventListener(listenerName, listener, true))
        })
    }
})()

此方法同样适用于 百度文库

标签: none

添加新评论