Как проверить, находится ли ссылка в том же домене? и загрузить затем ссылку в той же вкладке - PullRequest
1 голос
/ 25 марта 2020

У меня есть angular 8 приложение.

И у меня есть ссылка. Например: www.ad.nl. А затем ссылка перенаправит вас на новую вкладку.

Но если ссылка находится в том же домане, что и веб-сайт, в данном случае: localhost: http://localhost: 4200 / gezondheid / Measurement / actieindex

Тогда ссылка для загрузки в той же вкладке. Так что не разные вкладки.

, так что это функция для внешней ссылки:

@Input() activities: Activity[];

 isExternalLink(link: string): boolean {
    const currentHost = window.location.hostname;
    const linkHost = link.replace(/^http?:\/\/([^\/]*)\/.*/, (match, g1) => g1);
    return currentHost !== linkHost;
  }

  getRouterLink(link: string): string {
    return '/' + link;
  }

и это шаблон:

  <a
      *ngIf="activity.link; else nolink"
      [href]="activity.link"
      [attr.target]="isExternalLink(activity.link) ? '_blank' : null"
      [attr.rel]="isExternalLink(activity.link) ? 'noopener noreferrer' : null"
    >

Но как это сделать, если ссылка находится в тот же домен, что и сайт, который будет загружен не во вкладке extern, а в той же вкладке. Потому что теперь: http://localhost: 4200 / gezondheid / Measurement / actieindex будет загружен в отдельную вкладку, а не в ту же вкладку.

1 Ответ

2 голосов
/ 25 марта 2020

Что-то вроде этого должно быть достаточно:

isExternalLink(link: string): boolean {
    const currentHost = window.location.hostname;
    return !linkHost.includes(currentHost);
  }

Например, для этой страницы (переполнение стека) window.location.hostname возвращает "stackoverflow.com" . Если у вас есть ссылка "{ ссылка }", ваш метод вернет false . В другом случае, скажем, «https://www.google.com/search?q=javascript&oq=javascript&aqs=chrome..69i57j69i60l3.2657j0j1&sourceid=chrome&ie=UTF-8», он вернет true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...