的重点 <portal>
元素(Chrome Canary 中的旗标后)是您可以预加载另一个完整的页面(如 <iframe>
),然后使用 API将其动画化到当前页面。因此,“单页应用程序”(SPA)的功能,但原生实现。我认为这很酷。我通常是 JavaScript 框架的粉丝,当它们通过帮助完成其他难以完成的事情(例如花哨的状态管理、高效的重新渲染和组件组合)来提供价值时。但是,如果仅仅为了 SPA 的特性而使用框架,那是不幸的。当人们所做的事情与本机标准化解决方案保持一致时,Web 平台才处于最佳状态。
但是,当事情变得无法访问时,Web 平台就不处于最佳状态。Steve Faulkner 撰写了 “关于 portal 元素的简短说明”,其中他指出了 portal 元素在当前状态下的七个问题。 这是一个演示,其中解决了一些问题。我想,如果很多问题可以通过外部修复,这在某种程度上是一个实现问题,但我认为其中很多问题无法修复(例如后退按钮行为、加载的页面是否成为可访问性树的一部分等)。
这是一个基本行为的视频
还值得注意的是,传送门似乎有意在 iFrames 中被阻止,因此除非您自己分叉并转到调试视图,否则这些笔无法工作。