Use idempotent exposeFunctionIfAbsent (no reinject flag) (#3233)
* Add exposeFunctionIfAbsent function * use exposeFunctionIfAbsent function instead of original exposeFunction * Remove "reinject" flag * exposeFunctionIfAbsent - onQRChangedEvent * exposeFunctionIfAbsent - onLogoutEvent
This commit is contained in:
parent
796a0a2367
commit
e470c82237
1 changed files with 235 additions and 227 deletions
23
src/util/Puppeteer.js
Normal file
23
src/util/Puppeteer.js
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Expose a function to the page if it does not exist
|
||||
*
|
||||
* NOTE:
|
||||
* Rewrite it to 'upsertFunction' after updating Puppeteer to 20.6 or higher
|
||||
* using page.removeExposedFunction
|
||||
* https://pptr.dev/api/puppeteer.page.removeExposedFunction
|
||||
*
|
||||
* @param {import(puppeteer).Page} page
|
||||
* @param {string} name
|
||||
* @param {Function} fn
|
||||
*/
|
||||
async function exposeFunctionIfAbsent(page, name, fn) {
|
||||
const exist = await page.evaluate((name) => {
|
||||
return !!window[name];
|
||||
}, name);
|
||||
if (exist) {
|
||||
return;
|
||||
}
|
||||
await page.exposeFunction(name, fn);
|
||||
}
|
||||
|
||||
module.exports = {exposeFunctionIfAbsent};
|
||||
Loading…
Reference in a new issue