Firefoxコンソールでアドオンコンテンツスクリプトにアクセスするにはどうすればよいですか?



How Access Add Content Script Firefox Console



解決:

Webコンソールのコンテキスト/スコープ(Ctrl-Shift-KまたはF12で直接開き、[コンソール]タブを選択)を拡張機能のコンテンツスクリプトのコンテキスト/スコープに変更する機能は存在しないようです。さらに、この機能は、Firefoxでコンソールを表示する他の方法には存在しません。この機能を要求するBugzillaにバグ/ RFEを提出する必要があります。それは非常に便利でしょう。 RFEに、タブ内の各フレーム(つまり、一番上のフレームと各子フレーム)のコンテンツスクリプトコンテキスト/スコープに切り替える機能があるべきであることを明確に説明する必要があります。これは、コンソールとデバッガーの両方に当てはまるはずです。

注:フレームセレクターのドロップダウンから開いたドロップダウンメニューからフレームを選択することで、コンソールをiframeのページスクリプトのコンテキスト/スコープに変更できます。



iframeに変更

このドロップダウンアイコンが表示されない場合は、DevTools設定に移動し、[現在ターゲットになっているドキュメントとしてiframeを選択する]をオンにします。ただし、これを行うと、A)コンテンツスクリプトのコンテキスト/スコープに切り替わりません。B)Webデバッガー(現在のバージョンのFirefoxおよびNightly(54.0a1)でテスト)では正しく機能しません。



Webデバッガー

WebExtensionコンテンツスクリプトでWebデバッガー(Ctrl-Shift-S、またはF12と[デバッガー]タブの選択)を使用できます。拡張機能のコンテンツスクリプトは、「ソース」の下の「ソース」にリストされています。moz-extension:// URL。拡張機能に使用されるUUIDを識別する必要があります。変数の内容を表示したり、ブレークポイントを設定したりできます。ただし、これでは、子フレームのコンテキストに明示的に切り替えることはできません。配置デバッガ;子iframeで実行されているJavaScriptのディレクティブは無効です。

Webデバッガーのデバッグコンテンツスクリプト(上部フレーム):

Webデバッガーのデバッグコンテンツスクリプト(上部フレーム)



バックグラウンドスクリプトコンテキストのコンソール

WebExtensionsのバックグラウンドスクリプトのコンテキストにあるコンソールを開きたい場合は、で拡張機能の[デバッグ]ボタンをクリックして開くことができます。about:デバッグ。ただし、これでは、コンテンツスクリプトのコンテキストでコンソールにアクセスすることはできません。

iframeで変数値を表示するための回避策

必要なもの:値がトップフレームではなくiframeコンテキストにあることを明確に示します。私はそうする2つの方法を見ます:

  • 使用するスクリプトがスクリプトであることを明確に示す情報が付加されたconsole.log() 信じている iframeで実行されています。例えば:

    console.log( 'In iframe'、 'foo ='、foo);

    あなたが持っている必要がないようにへのすべての呼び出しで「iframe内」console.log()を作成すると、その関数へのすべての呼び出しの前にそのテキストを追加する関数を作成できます。オーバーライドすることもできますconsole.log()関数なので、コードはまだ呼び出すだけですconsole.log()。

    ただし、これは、コードがiframeで実行されていると見なしていることを示しているだけです。デバッグしている可能性のあるものの一部は、コンテンツスクリプトコードがiframe内にあることを検出することです。

    この方法は、報告された値が 実際に iframeで。

  • Element.datasetまたは他のDOM要素属性を使用して値をDOMに格納してから、これらの値についてDOMを検査します。これらの属性を表示するために、DOMInspectorがこれらを非常に明確に示していることがわかりました。

    ここに画像の説明を入力してください

    このメソッドを使用すると、iframeで実行されているコードに依存せずに、値がiframe内の値であり、正確にどのiframeであるかを明確に示すことができ、iframe内にあることとiframe内にあることを正確に判断できます。