有没有一种方法可以使用chrome.tabs.executeScript
在选项卡中获取所有frameId
?
我尝试了executeScript()
,然后让代码将消息发送到后台,该消息将通过frameId
发送回内容,但是它是异步的。并且,executeScript()
需要同步返回。
最佳答案
是的,您可以使用chrome.tabs.executeScript()
(MDN)获得选项卡的frameId列表,这听起来像您已经确定了,但这样做有点麻烦。您可以将chrome.tabs.executeScript()
与选项allFrames:true
一起使用,以将内容脚本注入选项卡中的所有框架。然后,您的内容脚本将需要使用chrome.runtime.sendMessage()
(MDN)将消息发送回后台上下文。然后,frameId
将作为每个对象的属性,作为第二个参数sender
(MDN)传递给您的chrome.runtime.onMessage
(MDN)侦听器的对象的属性。您将需要自己积累列表。
更好的方法:使用chrome.webNavigation.getAllFrames()
(MDN)
正如wOxxOm在评论中提到的那样,从chrome.webNavigation.getAllFrames()
(MDN)获取它会容易得多。
无法使用同步接口获取选项卡的frameId列表。正如wOxxOm还提到的那样,唯一的方法是在需要之前获取信息。如果需要它来调用chrome.tabs.executeScript()
,则可以从chrome.tabs.executeScript()
的回调中调用chrome.webNavigation.getAllFrames()
。