將參數傳遞給使用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中文網其他相關文章!