重定向时如何防止浏览器刷新?

时间:2020-07-08 00:47:45

标签: javascript html css web tags

例如,在reddit.com上,当您从主页上单击个人资料时,它不会重定向。

2 个答案:

答案 0 :(得分:1)

这是单页应用程序或SPA的示例。 SPA根据客户端的需要动态加载内容,并使用它来更新页面。这可能包括更新浏览器URL以模拟页面之间的导航。正如您所注意到的,由于缺少重定向,SPA通常被认为具有更流畅的用户体验。 Vue.js是致力于创建SPA的Web框架示例,如果您有兴趣探索更多内容。

答案 1 :(得分:0)

有许多策略可以更新页面的内容,而无需实际的重定向或刷新整个页面,因此这里可能列出的策略太多。

我假设您没有使用任何前端框架,例如Vue / React / Elm等,所以我将讨论整体策略,这应该为如何入门打下基础。

首先让我们建立一个简单的示例:


<html>
<head></head>
<body>
   <nav>
     <a href="/page-1.html> Page One </a>
     <a href="/page-2.html> Page Two </a>
     <a href="/page-3.html> Page Three </a>
     <a href="/page-4.html> Page Four </a>
   </nav>
   <div id="stage">
   <!-- Updated content goes here -->
   </div>
   <div id="footer"></div>
</body>

好的,这里有一个简单的HTML文档,其中包含三个“节”,导航,舞台和页脚。

本质上,您将使用纯JavaScript或什至一点点JQuery使用新内容更新id =“ stage” div的innerHTML。

MDN拥有关于Javascript基本原理的很好的文档,并且与DOM

一起工作

StackOverflow,有更多详细的细分,例如HERE

触发器

您将侦听任何超链接“单击”事件,并防止任何重定向,获取新内容,然后使用新内容更新id =“ stage” innerHTML。

历史记录API

您很可能希望挂接到History API,以便您的用户可以按期望使用其后退和前进按钮。

AJAX

您可以使用纯JS或JQuery之类的帮助程序库,通过AJAX请求来获取新内容,以响应“ click”事件。

设计注意事项

您需要设计网站,以这种方式工作,并确保您请求的内容与您网站的设计和布局兼容。

暴力力解决方案

您可以通过AJAX获取完整页面的内容,然后用全新的文档替换当前文档。这样做可能会带来一些好处,例如预取/缓存,更平滑的过渡,但是在更新内容时可能会导致“刷新”。