首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >angular.js链接行为-禁用特定URL的深度链接

angular.js链接行为-禁用特定URL的深度链接
EN

Stack Overflow用户
提问于 2012-07-20 21:06:05
回答 5查看 29.8K关注 0票数 53

我有一个启用了HTML5模式的Angular.js应用程序。

代码语言:javascript
复制
$location.Html5mode(true).hashbang("!");

我想实现的是获得一些URL或<a>标签来执行正常的浏览行为,而不是使用HTML5历史API更改地址栏中的URL,并使用Angular控制器进行处理。

我有这个链接:

代码语言:javascript
复制
<a href='/auth/facebook'>Sign in with Facebook</a>
<a href='/auth/twitter'>Sign in with Twitter</a>
<a href='/auth/...'>Sign in with ...</a>

我希望浏览器将用户重定向到/auth/...,这样用户就会被重定向到身份验证服务。

我有没有办法做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-08 12:56:29

在Angular 1.0.1中添加target="_self"

代码语言:javascript
复制
<a target="_self" href='/auth/facebook'>Sign in with Facebook</a>

此功能已记录在案(https://docs.angularjs.org/guide/$location -搜索“_self”)

如果你很好奇,可以看看angular源代码(第5365行@ v1.0.1)。只有当!elm.attr('target')为真时,点击劫持才会发生。

票数 120
EN

Stack Overflow用户

发布于 2015-02-19 11:18:25

Fran6co方法的替代方法是禁用$locationProvider中的'rewriteLinks‘选项:

代码语言:javascript
复制
$locationProvider.html5Mode({
    enabled: true,
    rewriteLinks: false
});

这将完成与调用$rootElement.off(' click ')完全相同的事情,但不会干扰处理应用根元素上的单击事件的其他javascript。

请参见docsrelevant source

票数 20
EN

Stack Overflow用户

发布于 2012-08-03 04:26:11

这是关闭所有深度链接的代码。它从rootElement禁用单击事件处理程序。

代码语言:javascript
复制
angular.module('myApp', [])
   .run(['$location', '$rootElement', function ($location, $rootElement) {
      $rootElement.off('click');
}]);
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11580004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档