fix : agent full screen system
This commit is contained in:
11
README.md
11
README.md
@@ -342,6 +342,17 @@ inspectant la page en direct. Sans effet, mais sans erreur non plus (juste un av
|
||||
dans l'historique), si Stripchat change ce balisage — l'avertissement inclut alors un extrait
|
||||
du menu tel qu'ouvert, pour diagnostiquer sans repasser par les DevTools.
|
||||
|
||||
**Refermer le menu ne passe jamais par la touche Échap.** Quand la qualité active est déjà la
|
||||
meilleure, il n'y a rien à cliquer — le menu se referme en recliquant le bouton qui l'a
|
||||
ouvert, pas avec Échap comme un premier essai le faisait. Le rappel de plein écran a lieu
|
||||
avant ce réglage (voir plus haut), et si la touche du lecteur a fait entrer la page dans l'API
|
||||
plein écran native du navigateur (certains lecteurs mappent leur propre touche de plein écran
|
||||
dessus), Échap en fait sortir aussitôt — c'est le navigateur qui l'intercepte pour ça, avant
|
||||
même que la page n'ait son mot à dire, et rien côté site ne peut s'y opposer. Le symptôme :
|
||||
la fenêtre semblait rétrécir juste après le réglage de qualité, comme un second rappel de
|
||||
plein écran qui aurait annulé le premier — alors qu'il ne s'agissait que d'un Échap qui
|
||||
sortait du plein écran natif que la touche du lecteur venait d'activer.
|
||||
|
||||
**Le curseur est écarté du lecteur une fois la qualité réglée**, sans quoi la barre de
|
||||
contrôles du lecteur — qui se garde affichée tant qu'une souris réelle la survole — resterait
|
||||
visible en permanence, faute de mouvement ultérieur. Le point de sortie est **calculé, pas
|
||||
|
||||
@@ -258,8 +258,15 @@ export class FirefoxController {
|
||||
if (!best.active) {
|
||||
await this.click(best.x, best.y);
|
||||
} else {
|
||||
// Referme le menu sans rien changer.
|
||||
await this.pressEscape();
|
||||
// Referme le menu sans rien changer — en recliquant le bouton qui
|
||||
// l'a ouvert, pas avec Échap. Le rappel de plein écran a lieu avant
|
||||
// cet appel (voir l'ordre dans `startCapture`) : si la touche du
|
||||
// lecteur a fait entrer la page dans l'API plein écran native,
|
||||
// Échap en sort aussitôt — c'est le navigateur qui l'intercepte pour
|
||||
// ça, avant même que la page ne la voie passer, et rien côté page ne
|
||||
// peut s'y opposer. Un second clic sur le même bouton bascule le menu
|
||||
// fermé sans y toucher.
|
||||
await this.click(buttonPoint.x, buttonPoint.y);
|
||||
}
|
||||
|
||||
// Le curseur reste sinon posé sur le bouton ou l'option cliquée : la barre
|
||||
@@ -754,26 +761,6 @@ export class FirefoxController {
|
||||
return JSON.parse(raw) as { x: number; y: number } | null;
|
||||
}
|
||||
|
||||
private async pressEscape(): Promise<void> {
|
||||
await this.send(
|
||||
'input.performActions',
|
||||
{
|
||||
context: this.context,
|
||||
actions: [
|
||||
{
|
||||
type: 'key',
|
||||
id: 'stream-control-keyboard',
|
||||
actions: [
|
||||
{ type: 'keyDown', value: webdriverKey('escape') },
|
||||
{ type: 'keyUp', value: webdriverKey('escape') },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
5000,
|
||||
).catch(() => undefined);
|
||||
}
|
||||
|
||||
private async evaluate(expression: string, userActivation = false): Promise<unknown> {
|
||||
const response = await this.send<{
|
||||
type: string;
|
||||
|
||||
Reference in New Issue
Block a user