userScripts.execute()
將使用者指令碼注入到目標上下文(例如,標籤頁或框架)中。
注意: 預設情況下,注入的指令碼在 document_idle 時執行,或者在頁面載入完成後立即執行。如果將 injectImmediately 屬性設定為 true,指令碼將立即注入,無需等待,即使頁面仍在載入。
語法
let executeUserScript = browser.userScripts.execute(
injection, // array of objects
);
引數
injection-
一個物件陣列,指定要注入哪些使用者指令碼、在何處注入以及如何注入。
injectImmediately可選-
boolean。如果設定為true,則儘快在目標上下文中觸發注入。這並不能保證注入發生在頁面載入完成之前,因為頁面可能在指令碼到達目標之前就已載入。 js-
arrayofuserScripts.ScriptSource。要注入到匹配頁面的指令碼。 目標-
一個定義指令碼注入到的目標上下文的物件。
allFrames可選-
boolean。如果設定為true,指令碼將注入到所有可用的框架中。預設為false,此時指令碼僅注入到頂級框架。 documentIds可選-
arrayofstring。要注入到的文件的 ID。如果設定了frameIds,則不得指定此項。 frameIds可選-
arrayofinteger。要注入到的框架的 ID。如果設定了documentIds,則不得指定此項。 tabId-
integer。要注入到的標籤頁的 ID。
world可選-
userScripts.ExecutionWorld。用於執行指令碼的執行環境。預設為"USER_SCRIPT"。 worldId可選-
string。指令碼執行所在的使用者指令碼世界的 ID。僅在world為USER_SCRIPT或省略時有效。如果省略worldId,指令碼將在預設的USER_SCRIPT世界("")中執行。帶有下劃線(_)字首的值是保留的。最大長度為 256 個字元。一個世界可以被多個指令碼用作其執行環境。要配置世界的行為,請在第一個指令碼在該世界中執行之前,將其worldId傳遞給userScripts.configureWorld。
返回值
一個 Promise,成功後會 fulfilled 一個物件陣列,描述注入的結果,這些物件具有以下屬性:
documentId-
string。與注入關聯的文件 ID。 error可選-
string。任何錯誤訊息。此項與result互斥。 frameId-
integer。與注入關聯的框架 ID。 result可選-
string。任何指令碼注入的結果。此項與error互斥。
示例
await browser.userScripts.execute([
{
js: [{ code: "console.log('Hello world!');" }],
target: { tabId: 1 },
},
]);
瀏覽器相容性
載入中…