」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將參數傳遞給使用「chrome.tabs.executeScript()」注入的內容腳本?

如何將參數傳遞給使用「chrome.tabs.executeScript()」注入的內容腳本?

發佈於2024-11-07
瀏覽:533

How Do I Pass Parameters to Content Scripts Injected with `chrome.tabs.executeScript()`?

將參數傳遞給使用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