有没有一种方法可以使用chrome.tabs.executeScript在选项卡中获取所有frameId

我尝试了executeScript(),然后让代码将消息发送到后台,该消息将通过frameId发送回内容,但是它是异步的。并且,executeScript()需要同步返回。

最佳答案

是的,您可以使用chrome.tabs.executeScript()MDN)获得选项卡的frameId列表,这听起来像您已经确定了,但这样做有点麻烦。您可以将chrome.tabs.executeScript()与选项allFrames:true一起使用,以将内容脚本注入选项卡中的所有框架。然后,您的内容脚本将需要使用chrome.runtime.sendMessage()MDN)将消息发送回后台上下文。然后,frameId将作为每个对象的属性,作为第二个参数senderMDN)传递给您的chrome.runtime.onMessageMDN)侦听器的对象的属性。您将需要自己积累列表。

更好的方法:使用chrome.webNavigation.getAllFrames()MDN

正如wOxxOm在评论中提到的那样,从chrome.webNavigation.getAllFrames()MDN)获取它会容易得多。

无法使用同步接口获取选项卡的frameId列表。正如wOxxOm还提到的那样,唯一的方法是在需要之前获取信息。如果需要它来调用chrome.tabs.executeScript(),则可以从chrome.tabs.executeScript()的回调中调用chrome.webNavigation.getAllFrames()

09-25 18:20
查看更多