Ionic 2 InAppBrowser не загружает вставленные ссылки

Повсюду ища ответ. В моем приложении есть ссылки, которые динамически вставляются при загрузке контента из AJAX.

Я хочу, чтобы все ссылки, на которые нажимает пользователь, открывались в InAppBrowser или в системном браузере. Однако все открывается в веб-представлении.

Я пробовал множество вещей.

gap:// указано в политике содержания. URL-адреса правильно закодированы. Сделано window.open = (url, target?, opts?) => this.iab.create(encodeURI(url), '_blank', 'location=yes,hidden=no'); в app.component.ts.

Мой другой код работает там, где щелчок по ссылке правильно открывает InAppBrowser, но, похоже, это не работает с обычными ссылками <a href

Кажется, у всех есть какие-то проблемы с InAppBrowser, каков окончательный способ сделать это!?


person James    schedule 30.05.2017    source источник
comment
Дальнейшая отладка window.open() работает нормально, но щелчок по ссылке внутри содержимого не запускает window.open, он просто переходит к ссылке в веб-представлении.   -  person James    schedule 30.05.2017


Ответы (1)


Я делаю работу, как показано ниже

  1. Убедитесь, что добавлен плагин InAppBrowser.
  2. Добавьте код компонента для обработки события Click.
  3. В представлении я добавляю и нажимаю событие для динамического содержимого

handleClick(event) {
      if(this.platform.is('core'))
        return;
      if (event.target.tagName == "A") { 
          event.preventDefault();
          event.stopPropagation();
      // open link using inappbrowser
        var url = event.target.getAttribute('href');
        console.log(url);
        this.platform.ready().then(() => {
                    let browser = new InAppBrowser(url, '_blank');
                    browser.show();
        });
      }
    }
   <p (click)="handleClick($event)" [innerHTML]="item.content">></p>

person Nguyen Huynh    schedule 31.05.2017
comment
Спасибо, в итоге я сделал то же самое, но я поместил его в канал, потому что контент динамический, а не событие. - person James; 18.10.2017