javascript - Angular $位置。如果用户提交带有 hashbang 的 URL,如何在 html5Mode(true) 中解析查询字符串?

标签 javascript angularjs

我正在开发一个搜索页面,并且需要在 URL 中存储所有选定的过滤器和其他状态,以便用户可以共享他们的工作结果。

我使用 angular $location.search() 来更新和解析 URL。位置提供商设置如下:

$locationProvider.html5Mode(true).hashPrefix('!');

旧版浏览器的用户使用 hashbang 向使用现代浏览器的用户共享链接时,问题就开始了。在这种情况下 $location.search() 将不返回任何内容。

据我了解,原因是在“#”开始 $location.hash() 而不是 $location.search() 之后处于 html5 模式。但是 hashPrefix('!') 的目标是什么?我认为它应该解决这样的问题......

如果用户提交带有 hashbang 的 URL,我如何在 html5Mode(true) 中解析查询字符串?

最佳答案

好吧,如果您将 html5Mode 设置为 true,它会处理 Angular 中的所有路由,但它不会反射(reflect)服务器如何路由到您的应用程序。您现在可能已经为 hashbang 设置了路由,但是如果您还在没有它们的情况下在服务器上提供路由怎么办?

据我了解,如果您将 html5Mode 设置为 true 而旧版浏览器不支持它,它会自动回退到散列标签路由。如果有人要捕获该 URL,然后与 friend 分享它,并且您的服务器支持在任何一种情况下正确地将查询、路由和深度链接转换为您的 Angular 应用程序,那么您似乎已经被覆盖了。

关于javascript - Angular $位置。如果用户提交带有 hashbang 的 URL,如何在 html5Mode(true) 中解析查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23308879/

相关文章:

javascript - 我有一个空函数,用于在 Angularjs 中注销我的 Controller

java - 将 ZIP 文件从 servlet 发送到客户端不起作用

javascript - ui-router 没有替换 index.html 中的 ui-view

javascript - 使用 Create React App 在开发中代理

javascript - 将值从我的网站发送到 Amazon Echo 技能的 Lambda 函数

javascript - 使用自定义阅读更多指令的 ng-repeat 不起作用

javascript - 如果使用angular js的任何属性的所有json值都为null,如何隐藏表列

ios - 将 Angular 重定向与 wkwebview 一起使用

javascript - 在特定浏览器中打开链接

javascript - 对象 Javascript 中的标签无效 - 想要添加事件监听器