[英]Preventing back and forward buttons from reloading the page in a single page app
我有一个页面应用程序,其中页面永远不会卸载。 我在URL中使用#并使用javascript检测hashchange,然后使用JS和AJAX更新UI ...我不希望前进和后退按钮向服务器发出额外请求。
目前,用户最初第一次访问该站点时,会发出服务器请求(可以)
Processing by MyController#index as HTML
我的目标是这个服务器请求只在用户在网站的时间发生一次...每次他们点击任何其他链接时,我只是使用网址中的“#”来阻止新的服务器请求...所以我的所有“a”标签看起来都像这样
<a href="#page1/
我遇到的问题是单击后退和前进按钮会触发我的JS hashchange监听器(这是我想要的)...但它也调用
Processing by MyController#index as HTML //I DO NOT WANT THIS TO HAPPEN
这是我目前正在获得的功能
1.)用户导航到mydomain.com
2.)“启动MyController #index as HTML”处理并发出服务器请求(这没关系)
3.)用户点击链接,现在网址读取mydomain.com/#page1,我用JS更新视图(这是正常的)
4.)用户点击链接,现在网址读取mydomain.com/#page2,我用JS更新视图(这是正常的)
5.)用户单击BACK,现在url读取mydomain.com/#page1并用JS更新视图(这是正常的)
6.)服务器请求自动重新加载页面(“再次调用由MyController处理#index作为HTML”)(这不是正常的)
当用户点击后退按钮时,如何阻止步骤6发生?...我只想更改url并让我通过JS更新我的UI而没有服务器请求
此外,如果这有帮助,我在轨道上使用ruby。
你要做的事是不可能的。 您无法覆盖浏览器按钮的默认行为,如后退/前进/停止/刷新等。
你可以做的是创建自己的后退和前进按钮(并将它们放在实际的页面上,然后) - 并相应地编写它们的事件处理程序以进行AJAX调用。
这个工作对我来说很好jQuery hashchange事件
终于弄明白了。 出于某种原因,只要单击后退或前进按钮,Turbolinks就会重新加载页面。 我从应用程序中删除了Turbolinks gem,现在它的工作完美了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.