Puppeteer - 删除 exposeFunction 公开的函数?

Puppeteer - Remove function exposed by exposeFunction?

我按以下方式使用 exposeFunction 命令:

await this.page.exposeFunction('foo', function(){ return 'bar'; });

这按预期工作并为我提供了 window.foo 功能。

如果我再次调用此代码,会出现以下错误:

Error: Failed to add page binding with name foo: window['foo'] already exists!

使用 page.goto() 导航时甚至会出现此错误。

有没有办法取消绑定由 exposeFunction() 公开的函数?

您可以更改存储在 _pageBindings 映射中的函数。这很老套,因为您会更改内部变量,但这是解决此问题的唯一方法。

await this.page.exposeFunction('foo', function(){ return 'bar'; }); 
this.page._pageBindings.set('foo', function(){ return 'baz'; });