如何在angularjs中禁用IE8和IE9上的#hashbang重定向
Posted
技术标签:
【中文标题】如何在angularjs中禁用IE8和IE9上的#hashbang重定向【英文标题】:How to disable the #hashbang redirect on IE8 and IE9 in angularjs 【发布时间】:2014-09-07 23:20:15 【问题描述】:我有一个 angularjs (v 1.2.19) 应用程序,它由两个单独的 html 页面组成(或者实际上这些是一个文件夹中的两个单独的 angularjs 应用程序):
index.html edit.html我在 IE 8 和 9 上遇到了一些众所周知的兼容性问题(两者都不支持 html5 历史 API)。
我的配置包含:$locationProvider.html5Mode(true).hashPrefix('!');
我在应用程序中没有任何路由 - index.html 和 edit.html 可以被视为单独的 angularjs 应用程序 - 具有单独的 angularjs 初始化等。
问题看起来像这样:
每当我打开链接时:http://server/app
或 http://server/app/index.html
一切正常。
每当我打开链接:http://server/app/edit.html
从 ng-click 或直接在浏览器中打开时,页面都会自动重定向到 http://server/#!app/edit.html
如何禁用“hashbang”重定向? Edit.html 不是 index.html 的一部分,因此应该直接加载它,而不需要任何 index.html 重定向和“哈希”路由。
我尝试了下面的代码,但它导致了无限循环的重定向......
<!--[if lt IE 10]>
<script>
window.location = window.location.href.replace( /#.*/, "");
</script>
<![endif]-->
任何帮助表示赞赏。
【问题讨论】:
可能需要在服务器端进行调整(以 html5 模式重写)。在 ui-router 项目中有一个关于此的常见问题解答条目,请参阅github.com/angular-ui/ui-router/wiki/… 希望这会有所帮助。 感谢您的提示。但是,我不知道我应该重写什么。最后问题归结为这样一个事实,即我有一个角度应用程序,它不在 index.html 下。每当我尝试在 IE8/IE9 浏览器中打开该链接时,链接都会被 Angular 重写并添加 #。我应该使用 Apache2 等重写的链接是什么? 10 $digest() iterations reached. Aborting! when using $locationProvider.html5Mode(true);的可能重复 如何制定一个指令以确保发生全窗口重定向?它可能是您添加到 标记的属性,用于监视点击并将 window.location 强制为 this.href? 【参考方案1】:尝试禁用 html5mode
$locationProvider.html5Mode(false).hashPrefix('!');
或完全删除此字符串。
【讨论】:
以上是关于如何在angularjs中禁用IE8和IE9上的#hashbang重定向的主要内容,如果未能解决你的问题,请参考以下文章
jQuery.animate 在 IE8/IE9 上的 Facebook iFrame 中不起作用