如何检查 url 是不是指向外部角度应用程序
Posted
技术标签:
【中文标题】如何检查 url 是不是指向外部角度应用程序【英文标题】:How to check if url is pointing outside angular application如何检查 url 是否指向外部角度应用程序 【发布时间】:2019-10-15 04:58:54 【问题描述】:当用户点击 Angular 应用程序外部的链接时,我想显示一个弹出窗口。
如何检查 url 是否是外部的? 例如。指向同一个域,但不同的文档
<a [href]="someUrl" appCheckExternalUrl>someUrl</a>
@Directive(
selector: '[appCheckExternalUrl]'
)
export class CheckExternalUrlDirective
constructor(private el: ElementRef<htmlAnchorElement>)
get url() return this.el.nativeElement.href;
get isExternalUrl()
return ???;
棘手的部分是它取决于路由器设置。
假设我的应用托管在 mydomain.com/myapp
并定义路由 /myroute
。那么:
mydomain.com/myapp/myroute
- 内部路由
mydomain.com/anotherapp
- 外部路由。
但是如果路由器使用hashtag路由,那么
mydomain.com/myapp/myroute
是外部的。
而且这个 url 也是外部的,因为它不是由应用程序处理的:
mydomain.com/myapp/assets/logo.png
【问题讨论】:
你可以通过 flat js 或者使用 Angular 的路由器来拉取当前链接:***.com/a/45185477/7733570。然后就变成了一个简单的 js 问题,如何测试它是否是外部的:***.com/a/2911045/7733570 How to get current route的可能重复 @Z.Bagley:这怎么可能是重复的?? 随着这些变化,这使得这是一个非常不同的问题,但这可能会分解为其他几个问题。 1)如何获得所有内部角度路线? 2) 如何查看当前路线? (答案如上所示) 3)正则表达式检查 1 是否匹配 2? (答案再次显示在第一条评论中)。 1)在这里回答:***.com/a/46150355/7733570希望有帮助。 【参考方案1】:您可以使用 window.origin 来获取您所在页面的 url,因此您的 angular Page。
因此,您只需将网站的来源与 href 的来源进行比较。
【讨论】:
这不是正确的答案。它只说起源是否相同,但我的问题完全不同。以上是关于如何检查 url 是不是指向外部角度应用程序的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 UIDocumentInteractionController 是不是由于 iPad 上缺少外部应用程序而无法打开文档?