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'; });
我按以下方式使用 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'; });