我有音乐应用程序,其中我有简单的页脚播放器。用户可以从主页面列表中选择歌曲并在页脚中播放。现在要求即使用户从主页移动到应用程序中的其他页面(配置文件,书签),页脚播放器也不应该重新加载,并且应该始终在主页上播放音频。
我该怎么做?我需要通过ajax加载页面吗?
编辑: 我忘了提到开发已完成80%,并且每页加载时页脚都会重新加载。如果我现在必须使用Ajax,需要多少返工?
答案 0 :(得分:3)
使用PJAX。只需重新加载您想要的页面部分:https://github.com/rails/pjax_rails
它已经与Rails集成,你放在这个块之外的所有内容都不会被重新加载:
<div data-pjax-container>
<!-- PJAX updates will go here -->
</div>
答案 1 :(得分:1)
这是另一种类似于PJAX和Turbolinks的解决方案
答案 2 :(得分:1)
一些非常好的答案,但我只是想更好地解释你的问题。
HTTP请求是“无状态的”,这意味着每个请求都是完全独立的,在您请求新页面之前,您无法了解页面的状态。这使得无法仅使用HTTP在每个请求上重新加载页脚。
您可以使用cookie来保持请求之间的信息,因此您可以在请求之前启动它停止的播放器,但它仍然会重新加载(并在短时间内停止)。
您还可以将页面的其余部分放在iframe中,并且只更改iframe的内容。
然而,出于各种原因,这些解决方案并不是很好,所以我强烈推荐最后一个最好的解决方案:ajax。
简单解决方案正确pjax正如@aledalgrande建议的那样(或wiselink正如@adbeel所建议的那样)。我将练习使您的网站成为“单站点应用程序”,您可以使用ajax替换页面的特定部分而不是整个页面。然而,即使在现有的rails应用程序中,集成也应该相当简单。
答案 3 :(得分:0)
由于您将jQuery作为标记,我建议您查看http://api.jquery.com/load/。
答案 4 :(得分:0)
您可以使用简单的旧HTML并使其更容易和由于应用程序几乎“完成”,部署速度更快。稍后你应该实现一个更好的(ajax)选项。
简化: index.html
<iframe id="mainframe" src="other.html"></iframe>
<footer>
Don't reload me pls :D
</footer>
在页面导航(链接)上,您只在大型机上操作,不会重新加载页脚。
注意:这是丑陋的, 可能 会给您带来问题但可能会让您做最小的修改让你的网站尽快生活。
然后根据应用程序的实现方式,将所有内容重写为使用ajax可能需要“需要繁重工作”。请注意永远不会'很少或根本不需要工作'。