1

目標は、Google の Google Translator Toolkit にキーボード ショートカットを追加することです。ほとんどの機能にはキーボード ショートカットがありますが、これら 2 つにはありません。

最初の機能は Merge Down と呼ばれます。このブックマークレットが実行されると、正しく起動します。

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();

すべてに適用機能はよりトリッキーです。通常、この機能を実行するには 3 回クリックする必要があります。

#1ボタンをクリックして繰り返しダイアログを表示し、パラメータを設定します:何を何に置き換えるか。
#2 「すべてに適用」をクリックし、
#3全体で実際の置換をトリガーして、ダイアログ要素を非表示にします。

Google の内部コードをいじりたくないので、マウスのような通常のクリックが最適です。

#2 と #3 は簡単に起動します: 同じブックマークレットに一時停止:

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);

ジョブを完了するためにクリックする必要がある 2 つのボタンがポップアップ表示されるはずの [繰り返し] ボタンのクリックをシミュレートできません。ボタン自体は、iframe 内に img を持つ div です。ここで見つけたクリック シミュレーションのほとんどの方法を試しましたが、最新のものはこれでしたが、まったく同じようには機能しません (参照は正しく取得されています)。

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

(ボタン自体は、内部に img を含む div です。セグメントが他の場所で繰り返されるかどうかに応じて、ボタンは有効または無効になります。有効なボタンの HTML コードは次のとおりです。

<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>
4

1 に答える 1

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() })();

これは、私の質問に答えて 3 回クリックするブックマークレットです。この答えは私をひっくり返しました

于 2016-12-29T22:13:46.063 に答える