console.log('something');
ポップアップページ、または含まれているスクリプトから呼び出すと、正常に動作します。
ただし、背景ページはポップアップページから直接実行されないため、コンソールには含まれません。
をconsole.log()
バックグラウンドページに表示して、ポップアップページのコンソールに表示する方法はありますか?
背景ページからポップアップページの関数を呼び出す方法はありますか?
console.log('something');
ポップアップページ、または含まれているスクリプトから呼び出すと、正常に動作します。
ただし、背景ページはポップアップページから直接実行されないため、コンソールには含まれません。
をconsole.log()
バックグラウンドページに表示して、ポップアップページのコンソールに表示する方法はありますか?
背景ページからポップアップページの関数を呼び出す方法はありますか?
回答:
すべての拡張ページ(コンテンツスクリプトを除く)は、を介してバックグラウンドページに直接アクセスしますchrome.extension.getBackgroundPage()
。
つまり、ポップアップページ内では、次のことができます。
chrome.extension.getBackgroundPage().console.log('foo');
使いやすくするには:
var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');
あなたは内の同じをしたい場合は今、コンテンツのスクリプトあなたは使用する必要がメッセージパッシングをそれを達成するために。その理由は、どちらも異なるドメインに属しているためです。メッセージパッシングページには、チェックアウトできる多くの例があります。
すべてがクリアされることを願っています。
alert()
chrome.extension.getBackgroundPage()
、私が得ますnull
。権限を設定したり、その他の設定をしたりする必要がありますか?
拡張機能リストの「background.html」リンクをクリックすると、バックグラウンドページのコンソールを開くことができます。
拡張機能に対応する背景ページにアクセスするにはSettings / Extensions
、新しいタブを開くか、新しいタブを開いて、と入力しchrome://extensions
ます。このスクリーンショットのようなものが表示されます。
拡張機能の下のリンクをクリックしますbackground page
。新しいウィンドウが開きます。以下のために、コンテキストメニューのサンプルウィンドウは、タイトルを持っています_generated_background_page.html
。
質問に直接回答するにconsole.log("something")
は、バックグラウンドから呼び出すと、このメッセージがバックグラウンドページのコンソールに記録されます。それを表示するには、拡張機能の下に移動しchrome://extensions/
てクリックしinspect view
ます。
ポップアップをクリックすると、現在のページに読み込まれるので、console.logは現在のページにログメッセージを表示します。
最も簡単な解決策は、ファイルの先頭に次のコードを追加することです。また、通常どおりすべての完全なChromeコンソールAPIを使用できます。
console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc
const log = chrome.extension.getBackgroundPage().console.log;
log('something')
ログを開く:
元の質問に関連して、モハメド・マンスールが受け入れた回答に加えて、これを逆にする方法もあると思います:
呼び出しを使用して、バックグラウンドページ/スクリプト内から他の拡張ページ(オプションページ、ポップアップページなど)にアクセスできますchrome.extension.getViews()
。ここで説明されています。
// overwrite the console object with the right one.
var optionsPage = ( chrome.extension.getViews()
&& (chrome.extension.getViews().length > 1) )
? chrome.extension.getViews()[1] : null;
// safety precaution.
if (optionsPage) {
var console = optionsPage.console;
}
これは古い投稿ですが、すでに良い答えがありますが、2ビット追加します。私はconsole.logを使用したくありません。コンソールにログを記録するロガーを使用したいのですが、好きな場所で使用できるように、このようなログ関数を定義するモジュールを用意しています。
function log(...args) {
console.log(...args);
chrome.extension.getBackgroundPage().console.log(...args);
}
log( "this is my log")を呼び出すと、ポップアップコンソールとバックグラウンドコンソールの両方にメッセージが書き込まれます。
利点は、コードを変更せずにログの動作を変更できることです(本番環境でログを無効にするなど)。