如何防止 browser_action 每次都重新加载其弹出窗口 window?
How to prevent browser_action from reloading its popup window every time?
我正在开发一个网络扩展,但遇到了以下问题。
我有 browser_action 显示带有一些内容的弹出窗口 window。问题是,加载需要 3-4 秒,用户每次打开此浏览器操作时都必须等待。
我想以某种方式强制 browser_action 加载弹出 window 的 DOM 仅 一次 ,所以当我再次打开此操作时它显示我已经渲染了 window.
我无法通过后台脚本预加载任何资产,因为资产是远程网站的 <iframe>
并且您无法轻松地将呈现的 DOM 存储在 localStorage 中以便稍后在用户上显示请求。
我考虑过将 <iframe>
放入后台脚本并以某种方式在 browser_action 弹出窗口 window 中显示它,但我没有找到如何做到这一点。
背景页面加载一次并在启用扩展程序时永远保持不变,所以也许我可以以某种方式在 browser_action 弹出窗口 window 中显示它的内容?
不幸的是,我不认为这是不可能的。最好的选择是在加载 iframe
时显示一些有用的 UI。
要使弹出页面本身持久化当然是不可能的。
而且我 98% 肯定您不能将加载的 tab/frame 换入弹出页面。 Chrome 有时会在内部执行(预加载然后交换,请参阅 tabs.onReplaced
),但您几乎无法控制此机制。
看来你可以用preload
links触发它:
<link rel="preload" href="https://example.com/"
as="document" crossorigin="anonymous">
但是,将其嵌入弹出页面没有什么用处(它将在弹出窗口加载时获取,这是毫秒级的差异)而且我有理由相信从后台页面预加载它不会转移到弹出窗口,尽管它们通常共享浏览器进程。不过您可以尝试一下!
我正在开发一个网络扩展,但遇到了以下问题。
我有 browser_action 显示带有一些内容的弹出窗口 window。问题是,加载需要 3-4 秒,用户每次打开此浏览器操作时都必须等待。
我想以某种方式强制 browser_action 加载弹出 window 的 DOM 仅 一次 ,所以当我再次打开此操作时它显示我已经渲染了 window.
我无法通过后台脚本预加载任何资产,因为资产是远程网站的 <iframe>
并且您无法轻松地将呈现的 DOM 存储在 localStorage 中以便稍后在用户上显示请求。
我考虑过将 <iframe>
放入后台脚本并以某种方式在 browser_action 弹出窗口 window 中显示它,但我没有找到如何做到这一点。
背景页面加载一次并在启用扩展程序时永远保持不变,所以也许我可以以某种方式在 browser_action 弹出窗口 window 中显示它的内容?
不幸的是,我不认为这是不可能的。最好的选择是在加载 iframe
时显示一些有用的 UI。
要使弹出页面本身持久化当然是不可能的。
而且我 98% 肯定您不能将加载的 tab/frame 换入弹出页面。 Chrome 有时会在内部执行(预加载然后交换,请参阅 tabs.onReplaced
),但您几乎无法控制此机制。
看来你可以用preload
links触发它:
<link rel="preload" href="https://example.com/"
as="document" crossorigin="anonymous">
但是,将其嵌入弹出页面没有什么用处(它将在弹出窗口加载时获取,这是毫秒级的差异)而且我有理由相信从后台页面预加载它不会转移到弹出窗口,尽管它们通常共享浏览器进程。不过您可以尝试一下!