我有一个单页应用程序,页面永远不会被卸载。我在使用url中的#号,并使用JavaScript检测哈希变化,然后使用JS和AJAX更新UI...我不想让前进和后退按钮向服务器发出额外的请求。
目前,当用户第一次访问网站时,会发出一个服务器请求(这是可以接受的)。
我的目标是让这个服务器请求在用户在网站上的时间内只发生一次...每次他们点击任何其他链接,我只需在URL中使用“#”来防止新的服务器请求...所以我的所有“a”标签看起来都像这样: 我遇到的问题是,点击后退和前进按钮会触发我的JS hashchange监听器(这正是我想要的)...但它也调用了
这是我目前的功能:
1.) 用户导航到mydomain.com
2.) 启动“Processing by MyController#index as HTML”,发出服务器请求 (这是可以的)
3.) 用户单击链接,现在的URL为mydomain.com/#page1,我使用JS更新视图 (这是可以的)
4.) 用户单击链接,现在的URL为mydomain.com/#page2,我使用JS更新视图 (这是可以的)
5.) 用户单击后退按钮,现在的URL为mydomain.com/#page1,我使用JS更新视图 (这是可以的)
6.) 当用户单击后退按钮时,会自动发出服务器请求重新加载页面(再次调用"Processing by MyController#index as HTML") (这是不可以的) 如何防止用户单击后退按钮时发生第6步?... 我只想更改URL并通过JS更新我的UI,而不需要服务器请求。 另外,我正在使用Ruby on Rails。
目前,当用户第一次访问网站时,会发出一个服务器请求(这是可以接受的)。
Processing by MyController#index as HTML
我的目标是让这个服务器请求在用户在网站上的时间内只发生一次...每次他们点击任何其他链接,我只需在URL中使用“#”来防止新的服务器请求...所以我的所有“a”标签看起来都像这样: 我遇到的问题是,点击后退和前进按钮会触发我的JS hashchange监听器(这正是我想要的)...但它也调用了
Processing by MyController#index as HTML //I DO NOT WANT THIS TO HAPPEN
这是我目前的功能:
1.) 用户导航到mydomain.com
2.) 启动“Processing by MyController#index as HTML”,发出服务器请求 (这是可以的)
3.) 用户单击链接,现在的URL为mydomain.com/#page1,我使用JS更新视图 (这是可以的)
4.) 用户单击链接,现在的URL为mydomain.com/#page2,我使用JS更新视图 (这是可以的)
5.) 用户单击后退按钮,现在的URL为mydomain.com/#page1,我使用JS更新视图 (这是可以的)
6.) 当用户单击后退按钮时,会自动发出服务器请求重新加载页面(再次调用"Processing by MyController#index as HTML") (这是不可以的) 如何防止用户单击后退按钮时发生第6步?... 我只想更改URL并通过JS更新我的UI,而不需要服务器请求。 另外,我正在使用Ruby on Rails。