当前位置: 首页 > 面试题库 >

如何动态更改URL而无需重新加载?

鄂坚
2023-03-14
问题内容

好的,这就是我想要做的(我认为Google也是这么做的):

方案A:

在页面中,/Main_Page假设有3个部分。当用户点击“链接”部分时,section A的内容将通过AJAX加载并嵌入到页面中。

方案B:

/Main_Page/Section_A被加载时,我们实际上去非常相同的页面(如在方案A) - /Main_Page和负载Section A通过AJAX -如前。

问题 :

我们有2个相同的结果页面,但是URL不同(在第一种情况下,它只是/Main_Page,而在第二种情况下是/Main_Page/Section_A)。

我想做的事 :

  • 在方案A中,Section A通过AJAX 加载后,我该如何做,以使出现的URL(在浏览器地址栏中)为/Main_Page/Section_A(或与此相关的任何其他内容),而无需进行任何重定向,页面重新加载等?

问题答案:

您的问题可以通过实现History API来解决,尤其是通过使用pushState()方法。我建议在MDN中阅读有关它的内容。还有一个名为History.js的多合一解决方案,它将帮助您轻松地实现x浏览器(#如果浏览器不支持,则将回退为URL哈希)。

这是一个例子:

history.pushState('', 'New Page Title', newHREF);

不够兴奋?这是一个鼓励您实施的演示。



 类似资料:
  • 问题内容: 嘿,我注意到在浏览GitHub存储库时,它使用AJAX加载每个文件夹/文件。 我了解所有这些,我只是想知道他们如何更改URL。您可以使用JavaScript获取并设置URL吗?如果是这样,对于将基于JavaScript的网站的一部分添加为书签可能非常有用。(其中的几页,通过JavaScript在其中移动) 谢谢。 问题答案: 它在历史记录操作API中使用了新的push/ pop状态功能

  • 有没有可能--在中也这样做? 我为什么需要这个?让我用一个例子来解释: 创建新类别的路由是,在保存时显示,并且要将路由(23-是新项的id存储在数据库中)

  • 问题内容: 当前,我们的项目正在使用default ,而我正在使用此“ hack”来进行更改,而无需重新加载页面: 和在 我想到的替换用筑巢路线,但无法找到这。 有可能吗? 我为什么需要这个?让我用一个例子来解释: 创建新类别的路线是在SAVE 之后显示的,我想将路线更改为(23-是存储在db中的新项目的id) 问题答案: 只需使用即可代替 。内部调用,但会自动将选项设置为。您可以呼叫和设置。例如

  • 问题内容: 我从数据库获取数据并将其显示在div中…我要做的是单击链接时应更改div的内容 一种选择是通过URL将参数传递给自身并重新加载页面… 我需要这样做而 无需重新加载\刷新 … 目的是当我单击任何链接时,div和php变量的内容无需刷新即可更新....这样 用户可以看到新数据 ,然后如果执行某些查询,它将在新变量上 ps我知道它将需要一些AJAX,但我不知道AJAX ..所以请以我可以学习

  • 问题内容: 我将如何更新每两秒钟在服务器上更新一次的映像,而无需用户按下刷新按钮,我的第一个猜测是ajax,但我之前从未真正使用过它。有人能指出我正确的方向吗? 编辑:忘记提及图像是由perl脚本生成的.gif-尝试通过url抓取它返回脚本 问题答案: 您的Perl脚本似乎有问题。尝试通过URL访问图像应该仍然返回图像。它应该返回二进制数据而不是脚本。您还应该将响应的Content- type标头

  • 问题内容: 我很清楚使用URL片段来跟踪AJAX支持的网页上的状态的技术,但是最近我注意到很多站点在做类似的事情但没有片段。 例如,最新版本的Facebook中的图片查看器以这种方式运行。左侧和右侧导航按钮是简单的链接,没有片段,单击这些片段可以更改浏览器的URL,而无需加载整个页面。 另一个示例是GitHub的存储库浏览器,每个文件/文件夹都是一个简单的链接,可更改页面状态和浏览器URL,而无需