【发布时间】:2016-12-22 15:38:26
【问题描述】:
Twitch 引入了一项功能,当您打开流页面并导航到网站的其他部分时,该功能允许视频在左下角继续播放而不会出现任何中断。这甚至在按浏览器中的后退按钮时也有效,并且仅在关闭选项卡或手动输入您要访问的 URL 时中断(例如 https://www.twitch.tv/directory/discover)。
我一直在试图弄清楚这是如何完成的。该视频被嵌入到具有“js-player-persistent”类的 div 中,所以我认为它与 Javascript 和从会话存储中获取数据有关,但我不确定这具体需要多少努力。
感谢您的帮助!
【问题讨论】:
-
据我了解,Twitch 是一个 SPA,所以不能将视频与其他所有内容分开加载,然后当您选择不同的流时,它只会更改视频源的来源?只是一个想法。
-
我不知道 twitch 是如何工作的,但如果我必须自己编写代码,我会使用类似单页的解决方案,在导航时,只有部分正文内容发生变化,而不是加载一个全新的页面。
-
@Shilly 基本上做到了。像 YouTube 一般不会真正加载新页面,而是用新加载的页面替换内容。 Twitch 几乎肯定会做类似的事情。
-
我认为,当您在 Twitch 中导航时,您并没有改变页面,而只是改变了当前的“视图”......所以应用程序的框架总是相同的。他们在主视图前面创建了一个孤立的视图。
-
您可以通过使用 URL 哈希保持在同一页面上来保持后退按钮的兼容性,但仍然有一个历史条目和一个事件 (onhashchange) 来跟踪请求的视图。例如:myapp.com --> myapp.com/#!/video1 --> myapp.com/#!/video2 然后,如果需要,您可以使用 url 重写来再次从 URL 中删除哈希值。另一种方法是使用历史模块中的 replaceState() API,但以我有限的经验,这比使用哈希片段更复杂。
标签: javascript twitch