0

送信する各メールから情報を取得してスプレッドシートに保存するChrome拡張機能を作成しています。私はjavascriptでコンテンツスクリプトを書いています。

送信ボタンをクリックしたときに情報の取得を開始したいので、次のようにイベントリスナーをアタッチする必要があります。

var el = document.getElementById("some_ID");
el.addEventListener('build', function(e){...}, false);

ただし、Gmailはページのさまざまな要素に動的にIDを割り当てるため、要素IDに何を入力するかを事前に知ることはできません。

私の質問はこれを回避する方法ですか?イベントリスナーをアタッチしたり、「送信」ボタンがあるDOMノードにアクセスしたりする方法は他にもあると思います。

4

3 に答える 3

4

メールを作成するときにポップアップする標準のGmailダイアログについて話している場合は、次のように送信ボタンに移動できます。

document.querySelector('table .HE td div[role="button"][data-tooltip^="Send"]')

また

document.querySelectorAll('table .HE td div[role="button"][data-tooltip^="Send"]')[0]

Gmailに移動して[作成]をクリックすると、コンソールに上記を入力すると、送信ボタンが表示されます。

ただし、ユーザーがポップアウトウィンドウに切り替えた場合は、機能しない可能性があります。
一般的に、それも非常に壊れやすいかもしれません。Gmailのダイアログの表示方法が変わるとすぐに、セレクターも変更する必要があります。

于 2013-03-27T10:22:07.380 に答える
0

私は同様の拡張機能を開発しています。あなたが書いたようなセレクターは機能しますが、問題は、作曲家が存在する場合にのみ「送信」ボタンが表示されることです。

作曲家が存在しないか、閉じられている場合、リスナーは死にます。右?これで、ボタンが存在するかどうかをチェックする「間隔」ができました。

ありがとう。

于 2017-05-11T15:42:17.887 に答える
0

data-tooltip言語によって変わる可能性があります、私は次のセレクターを使用しています

$("[role=dialog] table .HE td div[role=button]").first();

ただし、新しいメールを作成する場合にのみ機能します(返信や転送はできません)

ここで私のために働いている別の方法:

$(".gU.Up div[role=button]");
于 2021-02-09T16:50:16.307 に答える