將參數傳遞給使用chrome.tabs.executeScript() 注入的內容腳本
使用chrome.tabs.executeScript 注入內容腳本文件時({file: "content.js"}),出現一個常見問題:如何在內容腳本檔案中向JavaScript 傳遞參數?
參數傳遞謬誤
需要澄清的是,您不能直接將參數傳遞到檔案。相反,您有兩個選擇來實現此功能:
1。在檔案執行之前設定參數
在註入檔案之前嵌套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