【问题标题】:removing angular hash and prefix from #anchor从#anchor 中删除角度哈希和前缀
【发布时间】:2017-01-24 09:40:21
【问题描述】:

我正在努力建立指向网站的直接锚链接。每当我尝试通过以下方式链接到 id 时: https://www.somesite.com/cl/details/agents#20841
#20841 是我的锚标记。 Angular 打破了 url 并使其成为:
https://www.somesite.com/cl/details/agents#!#20841
这在 chrome 和 firefox 中运行良好,但在 Internet Explorer 和 Edge 中它不支持,因此它“破坏”了 url。我尝试将前缀更改为“!”,而不是“/”。

有人可以解决这个问题吗?

【问题讨论】:

  • 从 Angular 1.5 开始,默认使用 $locationProvider.html5Mode(true/false);
  • 试图设置 $locationProvider.html5Mode(true);在 Internet Explorer 9 中破坏了一些动画等
  • 它如何解决任何错误或问题?
  • 是的,很抱歉没有详细说明,在 Internet Explorer 9 中,由于某种原因,它会破坏一些动画。

标签: javascript angularjs


【解决方案1】:

如果您使用的是 Angular 1.6,则可以通过将以下代码添加到您的配置来删除此前缀:

appModule.config(['$locationProvider', function($locationProvider) {
  $locationProvider.hashPrefix('');
  $locationProvider.html5Mode(true);
}]);

请注意,由于 HTML5 兼容性,它可能会not be supported in IE9

更多信息请参见this link

【讨论】:

  • 让它更烦人,我无法使用 1.6 版,所以添加这段代码只会给我最初的角度路由问题,所以哈希变成 #/20841
  • 如果这样做 $locationProvider.hashPrefix('!');如果我这样做 $locationProvider.hashPrefix(''); 我的锚将变为 #!#20841它回退到默认值,并且锚点变为 #/20841
  • 抱歉当时没看懂,我想去掉#!所以我只有一个有效的锚。所以#!#20481 变成了#20481
  • 好的,所以也添加这一行$locationProvider.html5Mode(true);。我已经更新了我的答案。
  • 如我上面的 cmets 所述,我可以运行 html5mode,因为它会破坏 Internet Explorer 9 中的一些动画
猜你喜欢
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 2011-05-29
  • 2012-04-19
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多