我正在开发一个网络扩展,我被困在下面的问题上。
我有一个browser_action,它显示带有一些内容的弹出窗口。问题是,加载需要3-4秒,用户每次打开此浏览器操作时都要等待。
我希望强制browser_action加载弹出窗口的DOM,只需加载一次,所以当我再次打开此操作时,它将显示已经呈现的窗口。
我不能通过后台脚本预加载任何资产,因为该资产是远程网站的<iframe>,您不能轻松地将呈现的DOM存储在localStorage中,以便稍后在用户请求时显示。
我想把<iframe>放在后台脚本中,并以某种方式在browser_action弹出窗口中显示它,但是我没有找到如何做到这一点。
背景页只加载一次,并且在启用扩展时永远保持不变,所以也许我可以在browser_action弹出窗口中显示它的内容?
发布于 2017-09-29 14:49:02
不幸的是,我认为这是不可能的。最好的选择是在iframe加载时显示一些有用的UI。
当然,不可能使弹出页面本身具有持久性。
我是98%的肯定,你不能在一个加载的选项卡/帧交换到弹出窗口的页面。Chrome有时在内部执行它(预加载,然后交换,参见tabs.onReplaced),但是您对这种机制几乎没有控制。
似乎你可以用 links来触发它
<link rel="preload" href="https://example.com/"
as="document" crossorigin="anonymous">但是,将其嵌入弹出式页面并没有什么用处(弹出加载时将获取它,这是毫秒的差异),而且我相当肯定的是,我可以相当肯定地说,预装它的背景页不会延续到弹出页面,尽管它们通常共享浏览器进程。不过,你可以做实验!
https://stackoverflow.com/questions/46491219
复制相似问题