首頁 >web前端 >js教程 >如何將參數傳遞給使用「chrome.tabs.executeScript()」注入的內容腳本?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-29 12:18:29278瀏覽

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 呼叫來定義變數:

<code class="javascript">chrome.tabs.executeScript(tab.id, {
    code: 'var config = 1;'
}, function() {
    chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});</code>

對於複雜變量,可以考慮使用JSON.stringify來轉換物件轉換為字串:

<code class="javascript">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'});
});</code>

在content.js 中,您可以存取以下變數:

<code class="javascript">// content.js
alert('Example:' + config);</code>

2.檔案執行後設定參數

先執行文件,然後使用訊息傳遞API傳送參數:

<code class="javascript">chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function() {
    chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});</code>

在content.js中,使用chrome監聽這些訊息。 runtime.onMessage 並處理訊息:

<code class="javascript">chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    // Handle message.
    // In this example, message === 'whatever value; String, object, whatever'
});</code>

以上是如何將參數傳遞給使用「chrome.tabs.executeScript()」注入的內容腳本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn