chrome.tabs.executeScript() で挿入されたコンテンツ スクリプトにパラメータを渡す
chrome.tabs.executeScript を使用してコンテンツ スクリプト ファイルを挿入する場合({file: "content.js"}) とよくある質問が発生します: コンテンツ スクリプト ファイル内の JavaScript にパラメータを渡すにはどうすればよいですか?
パラメータ渡しの誤謬
]パラメーターをファイルに直接渡すことはできないことを明確にすることが重要です。代わりに、この機能を実現するには 2 つのオプションがあります:
1。ファイル実行前のパラメータの設定
Nest chrome.tabs.executeScript を呼び出して、ファイルを挿入する前に変数を定義します:
chrome.tabs.executeScript(tab.id, {
code: 'var config = 1;'
}, function() {
chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});
複雑な変数の場合は、JSON.stringify を使用してオブジェクトを文字列に変換することを検討してください。
var config = {somebigobject: 'complicated value'};
chrome.tabs.executeScript(tab.id, {
code: 'var config = ' JSON.stringify(config)
}, function() {
chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});
content.js では、次の変数にアクセスできます:
// content.js
alert('Example:' config);
2.ファイル実行後のパラメータの設定
最初にファイルを実行し、次にメッセージ パッシング API を使用してパラメータを送信します:
chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function() {
chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});
content.js では、chrome.runtime.onMessage を使用してこれらのメッセージをリッスンし、メッセージを処理します。
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
// Handle message.
// In this example, message === 'whatever value; String, object, whatever'
});
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3