如何在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/apphttp://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重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何在IE中禁用兼容性视图

如何在 IE 中禁用兼容性视图

jQuery.animate 在 IE8/IE9 上的 Facebook iFrame 中不起作用

如何在 IE8 和 IE9 中隐藏下拉箭头?

ie7、ie8 和 ie9 的最佳占位符 polyfil 脚本 [关闭]

:active css 选择器不适用于 IE8 和 IE9