为旧浏览器设置回退到hashbang的链接

时间:2014-09-28 12:57:32

标签: angularjs

我正在设置HTML5模式。因此,模板中的链接没有hashbang,如:

<a ng-href='/link/to/action'>Click here</a>

但问题是,较旧的IE版本需要hashbang网址,我知道angularjs会因为IE而回退。但是我已经根据HTML5形成了链接。如何回退我自己的hashbangs链接?

换句话说, 我希望模板中的链接反映模式(HTML5或hashbang)类型并相应地设置其href。

因此,对于旧版浏览器,我希望链接是这样的:

<a ng-href='/#/link/to/action'>Click here</a> 

1 个答案:

答案 0 :(得分:1)

$locationProvider.html5Mode(false);

将此添加到app.config函数,它将禁用html5模式,并启用哈希#

如果您还需要!,那么也可以添加

$locationProvider.hashPrefix('!');

前:

angular.module('yourApp', ['ngCookies', 'ngResource'])
    .config(function($stateProvider, $urlRouterProvider, $locationProvider){
         $locationProvider.html5Mode(false);
         $locationProvider.hashPrefix('!');
    })

编辑:要检查html5,您可以包含modernizer.js库,或使用他们提供的代码示例

以下是一些可用于查找浏览器是否支持Html5的技术

http://diveintohtml5.info/detect.html#geolocation

前:

if (Modernizr.geolocation) {     
    $locationProvider.html5Mode(true);
} else {
    $locationProvider.html5Mode(false);
}