mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
Support Page.{Alert,Confirm,Prompt,BeforeUnload} events
This patch adds Page events to fire when javascript dialogs get opened.
This commit is contained in:
21
lib/Page.js
21
lib/Page.js
@@ -60,7 +60,7 @@ class Page extends EventEmitter {
|
||||
client.on('Network.responseReceived', event => this.emit(Page.Events.ResponseReceived, event.response));
|
||||
client.on('Network.loadingFailed', event => this.emit(Page.Events.ResourceLoadingFailed, event));
|
||||
client.on('Runtime.consoleAPICalled', event => this._onConsoleAPI(event));
|
||||
client.on('Page.javascriptDialogOpening', dialog => this.emit(Page.Events.Dialog, dialog));
|
||||
client.on('Page.javascriptDialogOpening', event => this._onDialog(event));
|
||||
client.on('Runtime.exceptionThrown', exception => this._handleException(exception.exceptionDetails));
|
||||
}
|
||||
|
||||
@@ -207,6 +207,20 @@ class Page extends EventEmitter {
|
||||
this.emit(Page.Events.ConsoleMessage, values.join(' '));
|
||||
}
|
||||
|
||||
_onDialog(event) {
|
||||
var eventType = null;
|
||||
if (event.type === 'alert')
|
||||
eventType = Page.Events.Alert;
|
||||
else if (event.type === 'confirm')
|
||||
eventType = Page.Events.Confirm;
|
||||
else if (event.type === 'prompt')
|
||||
eventType = Page.Events.Prompt;
|
||||
else if (event.type === 'beforeunload')
|
||||
eventType = Page.Events.BeforeUnload;
|
||||
if (eventType)
|
||||
this.emit(eventType, event.message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {boolean} accept
|
||||
* @param {string} promptText
|
||||
@@ -416,9 +430,12 @@ Page.ScreenshotTypes = {
|
||||
};
|
||||
|
||||
Page.Events = {
|
||||
Alert: 'alert',
|
||||
BeforeUnload: 'beforeunload',
|
||||
Confirm: 'confirm',
|
||||
ConsoleMessage: 'consolemessage',
|
||||
Dialog: 'dialog',
|
||||
Exception: 'exception',
|
||||
Prompt: 'prompt',
|
||||
ResourceLoadingFailed: 'resourceloadingfailed',
|
||||
ResponseReceived: 'responsereceived',
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user