2017-07-15 6 views
0

私は現在、Gmailのクロム拡張を開発中です。ユーザーが電子メールを開いて送信者の電子メールアドレスをそこから開いたときに、いくつかのアクションをトリガーしたい。だから私が思いついたのは、プロトタイプを介してXMLHttpRequest.sendを傍受し、このリクエストに電子メールデータが含まれていればそこからイベントをトリガーすることです。しかしgmailは休憩リクエストを送信せず、the dark forceを使ってメールの本文を取得します。私は実際にGoogleがどのように電子メールの本文と他のデータをページングするのか疑問に固執しています。私は、新しいデータがページに表示されることができる唯一の方法はrest経由であることを意味:gmailがデータをページに取り込む方法

  • フォームの提出
  • のXMLHttpRequest
  • WebSocketを

それらのすべてがdev-toolsを経由して検査することができます。そこでdocumenttopDOMSubtreeModifiedリスナーを追加するスニペットを作成しました。リスナーの内部では、開かれている電子メールデータをxpathで照会します。

など。私はGmailのメールアドレスAをどのように取得したのかを知りたい。このメールにはrandom text r2d2のような特定のテキストが含まれています。だから私はちょうど文書がinnerText random text r2d2とノードを含んでいるかどうか私のリスナーをチェックインします。そして、その後、私はちょうどNetworkタブをチェックして、開いている電子メールボタンをクリックしてページに新しいテキストを表示する間に送られた要求を確認します。 Here's the video to understand what I'm talking about.

function findEleWithText(text) { 
    let parent = document.body; 
    let results = []; 
    let query = document.evaluate("//*[contains(text()," + text + "')]", 
     parent || document, 
     null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 
    for (let i=0, length=query.snapshotLength; i<length; ++i) { 
    results.push(query.snapshotItem(i)); 
    } 
    return results; 
} 
document.addEventListener('DOMSubtreeModified', e => { 
    var e2 = findEleWithText("2:09 p.m.", document.body) 
    if (e2.length > 0) { 
    console.log('e'); 
    } 
}) 

しかし、ここが問題だ、電子メールのデータがページ内に表示されますが、Networkタブには、要求がなされなかったことを示しています。データがページに移動することはどのように可能ですか?たとえ要求がiframeからなされたとしても、とにかくNetworksに表示されます。私もgoogleがwebsocketを開くかどうか確認しました(wsデータはNetworksに表示されていません)。

アイデア? RESTを使用せずにデータをフェッチする方法はありますか?

答えて

0

電子メールのリストを表示しているときに、Gmailが電子メールを先読みすることが判明しました。電子メールを開くと、すでに取り込んだ変数のデータが表示されます。

関連する問題