how to remove event listener in window in js script or puppeteer not in chrome devtools

Viewed 51

I use getEventListener(document) and find out there is a mousedown with signiture like:

mousedown: Array(2)
0:
listener: ƒ _0xf710f2(_0x10a886)
once: false
passive: false
type: "mousedown"
useCapture: true
[[Prototype]]: Object
1:
listener: ƒ ()
once: false
passive: false
type: "mousedown"
useCapture: false
[[Prototype]]: Object
length: 2
[[Prototype]]: Array(0)

Now I want to remove the above two event listeners in pure javascript or in puppeteer. But I do not know the detail, I try:

const client = await page.target().createCDPSession()
const {result} = await client.send('Runtime.evaluate', {expression:'document', objectGroup:'handler'})
const {listeners} = await client.send('DOMDebugger.getEventListeners', {objectId:result.objectId})
for (const {type, handler} of listeners) console.log(type, handler)
await client.send('Runtime.releaseObjectGroup', {objectGroup:'handler'})

Now I can get type and handler of ducument. But I do not know how to remove the even listener?

What I try:

await page.evaluate(({type, ??}) => document.removeEventListener(type, ??), {type, ??})

What I should put in ?? I think ?? is some expression of handler.

Or other idea are welcome.

Or other idea that can remove all event listener of document are welcome.

Is there any idea when the event listener is on window?

Reason: I need to do some autotest on website use puppeteer, such two functions always intercept click event and affect the autotest.

0 Answers
Related