如何检查 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 是不是指向外部角度应用程序的主要内容,如果未能解决你的问题,请参考以下文章

存储您的应用指向外部的 URL,以便随时更改 URL

如何检查 UIDocumentInteractionController 是不是由于 iPad 上缺少外部应用程序而无法打开文档?

如何调用外部URL?

将指向外部 URL 的超文本链接点击重新路由到 Electron 应用程序以外的另一个浏览器

Laravel 检查给定 url 的路由是不是存在于路由中

检查 URL 是不是是有效的 Feed