Angular JS IE9 Hashbang url rewriting
Angular JS IE9 Hashbang url rewriting
这里的情况很奇怪。
所以我有两条路线:/RouteA
(/
也默认为这里(和/RouteB
/RouteA
实际上使用客户端路由,而/RouteB
则不这样做。
当我尝试导航到/RouteB
时,URL最初/RouteB
是正确的。
由于IE9不支持HTML5,Angular用hashbang重写了url以/#/RouteB
当重写发生时,它会强制浏览器刷新(我们可以停止这种行为吗?(,这会让我直接回到/
(最终/RouteA
(。
有没有办法防止浏览器在重写 url 时重新发送请求?
基本标记当前<base href="/"/>
。
尝试做这样的事情,让我登陆页面,但破坏了主菜单中试图将我送回/RouteA
的锚标签:
if (window.history && window.history.pushState) {
$locationProvider.html5Mode(true);
}
else {
window.location.hash = '/';
$locationProvider.html5Mode(false);
}
例如 /#/RouteB
变得/RouteB/#/
.然后点击链接返回/RouteA
,路线最终变得/RouteB/RouteA
显然中断了。
所以我尝试了一个类似问题的解决方案,但它产生了与上面相同的结果。 $location/在 html5 和 hashbang 模式之间切换/链接重写
有人有什么想法吗?
提前感谢!
我设法让它工作。它并不漂亮,但由于/RouteB
没有发生客户端路由,所以它足够好了。
在两个不同的应用程序共享一个角度模块之前。相反,我创建了两个不同的模块,并让它们依赖于之前共享的模块。
angular.module('sharedModule', ['dependancy1', ...]);
<!-- RouteA app -->
<div ng-app="sharedModule">...
<!-- RouteB app -->
<div ng-app="sharedModule">...
成为
angular.module('sharedModule', ['dependancy1', ...]);
angular.module('routeAModule', ['sharedModule']);
angular.module('routeBModule', ['sharedModule']);
<!-- RouteA app -->
<div ng-app="routeAModule">...
<!-- RouteB app -->
<div ng-app="routeBModule">...
然后在routeBModule
我使用了这篇文章中的修复程序:$location/在html5和hashbang模式之间切换/链接重写,这在我的问题中也提到了。
现在,当导航到/RouteB
时,路由被重写为/RouteB#/
,这不会重新加载/
并将我转储回不同的页面。
这个解决方案有两个问题。
- 使用尾随
/
导航到此页面可能会弄乱相对链接。 例如/RouteB#/
变得/RouteB/#/
因此尝试链接到/NewRoute
最终会链接到/RouteB/NewRoute
- 此页面上带有
href="#"
的锚标记会导致页面刷新。
可以对此进行改进,如果我让他们生病,请尝试记住更新此答案。
另外,如果有人有更好的解决方案,请随时发布。
您与路线的链接是什么样的?我认为您需要一条通往应用程序外部的任何路由的完整路径。您可以尝试如下操作:
<a href="RouteA">Route A</a>
<a href="/RouteB">Route B</a>
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- 以角度管理动态URL
- Mathias URL shortener
- 如何有效地将游戏数据存储在URL查询字符串中
- 使用带括号的图像URL作为jQuery的背景
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 传递包含'%的参数'在URL中
- 如何在不同的url angularjs上更改类名