Javascript 如何防止浏览器操作每次重新加载其弹出窗口?

Javascript 如何防止浏览器操作每次重新加载其弹出窗口?,javascript,iframe,google-chrome-extension,firefox-addon,firefox-addon-webextensions,Javascript,Iframe,Google Chrome Extension,Firefox Addon,Firefox Addon Webextensions,我正在开发一个webextension,我遇到了以下问题 我有一个浏览器动作,显示带有一些内容的弹出窗口。问题是,加载需要3-4秒,用户每次打开此浏览器操作时都必须等待 我想以某种方式强制browser_操作加载弹出窗口的DOM一次,所以当我再次打开此操作时,它会显示已渲染的窗口 我无法通过后台脚本预加载任何资产,因为该资产是远程网站的,您无法轻松地将呈现的DOM存储在localStorage中,以便稍后在用户请求时显示它 我想把放在背景脚本中,然后以某种方式显示在浏览器的弹出窗口中,但我没有找

我正在开发一个webextension,我遇到了以下问题


我有一个浏览器动作,显示带有一些内容的弹出窗口。问题是,加载需要3-4秒,用户每次打开此浏览器操作时都必须等待

我想以某种方式强制browser_操作加载弹出窗口的DOM一次,所以当我再次打开此操作时,它会显示已渲染的窗口

我无法通过后台脚本预加载任何资产,因为该资产是远程网站的
,您无法轻松地将呈现的DOM存储在localStorage中,以便稍后在用户请求时显示它

我想把
放在背景脚本中,然后以某种方式显示在浏览器的弹出窗口中,但我没有找到如何做到这一点


后台页面只加载一次,并且在启用扩展时一直保持不变,所以也许我可以在浏览器的弹出窗口中以某种方式显示它的内容?

不幸的是,我认为这是不可能的。最好是在加载
iframe
时显示一些有用的UI

当然,要使弹出页面本身持久化是不可能的

我98%肯定你不能在一个加载的标签/框架中切换到弹出页面。Chrome有时会在内部执行此操作(预加载然后交换,请参见
tabs.onReplaced
),但您对这种机制几乎没有控制权

似乎你可以用以下方法触发它:



然而,将其嵌入弹出页面(它将在弹出页面加载时提取,相差毫秒)并没有什么作用,我可以合理地确定,从(比如)背景页面预加载它不会遗留到弹出页面,尽管它们通常共享浏览器进程。你可以尝试一下

不幸的是,我认为这是不可能的。最好是在加载
iframe
时显示一些有用的UI

当然,要使弹出页面本身持久化是不可能的

我98%肯定你不能在一个加载的标签/框架中切换到弹出页面。Chrome有时会在内部执行此操作(预加载然后交换,请参见
tabs.onReplaced
),但您对这种机制几乎没有控制权

似乎你可以用以下方法触发它:



然而,将其嵌入弹出页面(它将在弹出页面加载时提取,相差毫秒)并没有什么作用,我可以合理地确定,从(比如)背景页面预加载它不会遗留到弹出页面,尽管它们通常共享浏览器进程。你可以尝试一下

如果您不需要交互(js),您可以将整个HTML和所有CSS存储为纯文本,然后将其写入iframe。“问题是,加载需要3-4秒”——这听起来像是您的实际问题。优化页面,而不是弹出窗口?我已经在疑问中声明了它是远程网站(WhatsApp网站要清楚)。我无法优化它。如果你不需要交互(js),你可以将整个HTML和所有CSS存储为纯文本,然后将其写入iframe。“问题是,加载需要3-4秒”-听起来像是你的实际问题。优化页面,而不是弹出窗口?我已经在疑问中声明了它是远程网站(WhatsApp网站要清楚)。我无法优化它。似乎Mozilla将此问题标记为WONTFIX:太糟糕。似乎Mozilla将此问题标记为WONTFIX:太糟糕。
<link rel="preload" href="https://example.com/"
      as="document" crossorigin="anonymous">