首頁 > web前端 > js教程 > 主體

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

Mary-Kate Olsen
發布: 2024-10-29 12:18:29
原創
205 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!