1

L'objectif est d'ajouter des raccourcis clavier au Google Translator Toolkit de Google. La plupart des fonctions ont des raccourcis clavier, mais pas les deux.Bookmarklet pour simuler un clic sur un bouton dans un service Google iframe

La première fonction est appelée Fusionner vers le bas. Il tire correctement lorsque ce bookmarklet est exécuté:

javascript:document.evaluate("//div[(@id='gtc-merge-arent')]/div[(@class='modal-dialog 
gtc-merge')]/div[(@class='modal-dialog-buttons')]/button[(text()='OK')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, 
null).singleNodeValue.click(); 

La fonction Appliquer à tous est plus délicate. Normalement, vous devez cliquer trois fois pour exécuter cette fonction:

# 1 de cliquer sur le bouton qui rend visible la boîte de dialogue Répétitions et de définir les paramètres: quoi remplacer avec.
# 2 de cliquer sur « Appliquer à tous » et déclencher le remplacement réel tout au long
# 3 pour cacher l'élément de dialogue. Je ne veux pas jouer avec le code interne de Google, donc un clic normal comme si de la souris serait le meilleur.

# 2 et # 3 feu assez facilement: même bookmarklet, avec une pause:

javascript:(function(pause) { 
document.evaluate("//div[(@id='fnrDialogParent')]/div[(@class='modal-dialog gtc-rep-modal-dialog')]/div[(@class='modal-dialog-buttons')]/button[(text()='Apply to all')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click(); 
setTimeout(() => document.evaluate("//div[(@id='fnrDialogParent')]/div[(@class='modal-dialog gtc-rep-modal-dialog')]/div[(@class='modal-dialog-buttons')]/button[(text()='Exit')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click(), pause) 
      })(400); 

Je ne peux pas simuler un clic sur le bouton Répétitions, qui est censé apparaître avec les deux boutons I besoin de cliquer pour terminer le travail. Le bouton lui-même est un div avec un img à l'intérieur d'un iframe. J'ai essayé la plupart des méthodes que je trouve ici pour un clic de simulation, le dernier étant this one, mais il ne fonctionne pas tous les mêmes (les références sont prises correctement)

var ifrm = document.querySelectorAll('iframe')[2];<br> 
$(ifrm).contents().find('img.jfk-button-img.gtc-img-rep').click(); 

(Le bouton lui-même est un div avec un .. img intérieur Selon que un segment répète ailleurs ou non, le bouton est soit -Enabled ou -disabled Voici le code HTML pour un bouton activé:

<div role="button" class="goog-inline-block jfk-button jfk-button-standard jfk-button-narrow jfk-button-collapse-left jfk-button-collapse-right jfk-button-clear-outline" tabindex="0" id="goog-gtc-repbutton" aria-label="Repeated: 3" data-tooltip="Repeated: 3" style="user-select: none;"><img src="./images/cleardot.gif" class="jfk-button-img gtc-img-rep" style="width: 21px; height: 21px;"></div> 

Répondre

0
javascript: (function() { 
    const a = f => new MouseEvent(f, { bubbles: !0 }), 
     b = f =>() => document.querySelector(f).click(), 
     c = f => `#fnrDialogParent .gtc-rep-modal-dialog .modal-dialog-buttons button[name=${f}]`, 
     d = { imgSel: (f =>() => { 
       const g = a('mousedown'), 
        h = a('mouseup'), 
        i = document.querySelector(f); 
       i.dispatchEvent(g), i.dispatchEvent(h) })('img.jfk-button-img.gtc-img-rep'), applyToAll: b(c('repDialogReplaceAll')), exit: b(c('repDialogExit')) }; 
    d.imgSel(), d.applyToAll(), d.exit() })(); 

C'est le bookmarklet qui répond à ma question et fait les 3 clics This answer tipped me off.

+0

Ce n'est pas tout à fait clair, d'après la question ou cette réponse, quel était le problème et comment vous l'avez réparé. –