网易云音乐播放器不受页面跳转影响是怎么做到的?

2013-12-07 23:28:43 +08:00
 FinalDream
9717 次点击
所在节点    编程
6 条回复
ccbikai
2013-12-07 23:33:17 +08:00
sodatea
2013-12-08 02:14:32 +08:00
一般而言用 pjax (history.pushState + ajax load, GitHub 就用了这个技术) 可以做到这样的效果. jQuery 有个 pjax 插件(https://github.com/defunkt/jquery-pjax)可以用.
但是至于网易云音乐……你看一下他的源代码就知道了, 除了播放器都是放在 iframe 里的, 地址部分是通过改变 fragment identifier (# 后的一串字符) 实现的,看了一下代码, http://s3.music.126.net/s/2/pt_index.js 这里也有用到 history.pushState 来保证历史记录能正常使用
kevinzhow
2013-12-08 02:21:22 +08:00
@sodatea 我猜是放iframe里的~
Air_Mu
2013-12-08 02:31:37 +08:00
抄袭Soundcloud的。
ccbikai
2013-12-08 08:48:19 +08:00
@Air_Mu 抄袭还算不上,用了相同的技术而已吧
kongruxi
2013-12-08 10:19:44 +08:00
如果一开始用像 Angular 或者 Ember 这些 Single Page Application 的框架,就不必用 iframe 这么奇怪的东西,更不用像虾米那样要在新窗口打开,看看这里 https://hepaimusic.com

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX