ホームページ  >  記事  >  ウェブフロントエンド  >  Chrome 拡張機能を使用して Gmail メッセージ内のグローバル変数にアクセスするにはどうすればよいですか?

Chrome 拡張機能を使用して Gmail メッセージ内のグローバル変数にアクセスするにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-26 06:56:02615ブラウズ

How Can I Access Global Variables in Gmail Messages Using a Chrome Extension?

Chrome 拡張機能を使用した Gmail メッセージのグローバル変数へのアクセス

はじめに

Chrome 拡張機能を作成すると、Web ページの動作を変更できるようになります。そのようなニーズの 1 つは、Gmail メッセージの GLOBALS 変数など、ページからグローバル変数を取得することです。

問題

残念ながら、コンテンツ スクリプトは隔離された環境で実行され、ページの直接アクセスを妨げます。 GLOBALS などのウィンドウ プロパティ。 jQuery の .load() 関数はその取得に失敗し、ReferenceErrors が発生します。この問題は、開発者ツールのコンソールから GLOBALS にアクセスできるにもかかわらず発生します。

解決策: クロスコンテキスト通信

この通信ギャップを埋めるには、次の 2 つの方法のいずれかを使用できます。

1.スクリプトの挿入:

新しいスクリプト要素をページ コンテキストに挿入します。このスクリプトは、必要なデータを取得してコンテンツ スクリプトに戻すことができます。

2.イベント リスナー:

イベント リスナーを使用して、ページとコンテンツ スクリプトの間でデータを渡します。コンテンツ スクリプトは、必要な情報を含むページ スクリプトによって起動されるカスタム イベントをリッスンできます。

スクリプト インジェクションを使用した実装例

コンテンツ スクリプト (run_at: "document_end"):

<code class="js">var s = document.createElement('script');
s.src = chrome.extension.getURL('script.js');
(document.head || document.documentElement).appendChild(s);
s.onload = function() {
    s.remove();
};</code>

Script.js (挿入されたスクリプト):

<code class="js">setTimeout(function() {
    document.dispatchEvent(new CustomEvent('RW759_connectExtension', {
        detail: GLOBALS
    }));
}, 0);</code>

考慮事項

  • 「script.js」がマニフェスト ファイルの web_accessible_resources セクションに追加されました。
  • コンテンツ スクリプトは、挿入されたスクリプトでは利用できない追加機能にアクセスできるため、ロジックの大部分を処理する必要があります。

以上がChrome 拡張機能を使用して Gmail メッセージ内のグローバル変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。