Javascript 如何保持js功能在不同页面之间运行?

Javascript 如何保持js功能在不同页面之间运行?,javascript,jquery,html,Javascript,Jquery,Html,我想知道像SoundCloud这样的网站是如何工作的:你播放一首歌,即使你不停地移动到另一个页面,它也会继续播放 有什么建议吗?我能想到的唯一方法是将你的应用程序,或者至少是需要继续运行的部分,构建为一个页面 实际上,这意味着只加载一个HTML文档。比如说,当按下链接时,浏览器操作被拦截和阻止,浏览器行为被javascript伪造 考虑一个由a和B页组成的网站。通常,当指向B的链接被激活时,URL被更改,浏览器调用服务器,请求B。但是,在单页应用程序中,这会被javascript函数中断,该函数

我想知道像SoundCloud这样的网站是如何工作的:你播放一首歌,即使你不停地移动到另一个页面,它也会继续播放
有什么建议吗?

我能想到的唯一方法是将你的应用程序,或者至少是需要继续运行的部分,构建为一个页面

实际上,这意味着只加载一个HTML文档。比如说,当按下链接时,浏览器操作被拦截和阻止,浏览器行为被javascript伪造


考虑一个由a和B页组成的网站。通常,当指向B的链接被激活时,URL被更改,浏览器调用服务器,请求B。但是,在单页应用程序中,这会被javascript函数中断,该函数使用历史API更改URL,然后以不需要从服务器同步获取新文档的方式显示B

我能想到的唯一方法就是把你的应用程序,或者至少是需要继续运行的部分,作为一个页面来构建

实际上,这意味着只加载一个HTML文档。比如说,当按下链接时,浏览器操作被拦截和阻止,浏览器行为被javascript伪造


考虑一个由a和B页组成的网站。通常,当指向B的链接被激活时,URL被更改,浏览器调用服务器,请求B。但是,在单页应用程序中,这会被javascript函数中断,该函数使用历史API更改URL,然后以不需要从服务器同步获取新文档的方式显示B

从技术上讲,当您使用SounClud时,您永远不会更改页面。你总是停留在同一个页面上,只有部分被更改,而这些部分实际上正在更改,因此你永远不会重新加载整个页面。这就是为什么他们可以继续播放音乐:他们只是从来没有删除或更改实际的播放器。如果您想知道,如果您从未离开过页面,为什么浏览器中的URL会发生变化:他们会操纵您的页面。
如果您对创建一个行为类似的应用程序感兴趣,您应该签出类似或的框架。提供了这些框架的良好概述。

从技术上讲,当您使用souncloud时,您永远不会更改页面。你总是停留在同一个页面上,只有部分被更改,而这些部分实际上正在更改,因此你永远不会重新加载整个页面。这就是为什么他们可以继续播放音乐:他们只是从来没有删除或更改实际的播放器。如果您想知道,如果您从未离开过页面,为什么浏览器中的URL会发生变化:他们会操纵您的页面。
如果您对创建一个行为类似的应用程序感兴趣,您应该签出类似或的框架。对这些框架有一个很好的概述。

有几种方法可以做到这一点

导航到新页面

如果这样做,将为新页面创建一个全新的JS执行上下文,因此无法保持函数运行。但是,您可以做的是在新页面中“恢复”执行。为此,您需要将旧页面的状态保存在服务器上,或者保存在页面更改之间持续存在的一些客户端存储中(cookies、localStorage等)

假导航


这是最用户友好的方式-你把你的网站变成一个web应用程序。您不再有多个页面,因此当用户想要更改在浏览器中看到的内容(如转到新歌)时,应用程序只需使用所需内容更改相应区域。这是一个复杂的话题,可能应该研究它本身,而不是用一个简单的答案来解释。继续,用谷歌搜索“单页应用程序”,你会找到大量的资源。

有几种方法可以做到这一点

导航到新页面

如果这样做,将为新页面创建一个全新的JS执行上下文,因此无法保持函数运行。但是,您可以做的是在新页面中“恢复”执行。为此,您需要将旧页面的状态保存在服务器上,或者保存在页面更改之间持续存在的一些客户端存储中(cookies、localStorage等)

假导航


这是最用户友好的方式-你把你的网站变成一个web应用程序。您不再有多个页面,因此当用户想要更改在浏览器中看到的内容(如转到新歌)时,应用程序只需使用所需内容更改相应区域。这是一个复杂的话题,可能应该研究它本身,而不是用一个简单的答案来解释。继续,用谷歌搜索“单页应用程序”,你会找到大量的资源。

这可以通过使用动态数据和更改url来实现。您是否有特定的问题?这可以通过使用动态数据和更改url来实现。你有什么特别的问题吗?