2017-05-30 1 views
0

Recherche partout pour trouver une réponse. Mon application contient des liens insérés dynamiquement lors du chargement du contenu à partir d'AJAX.Ionic 2 InAppBrowser ne chargera pas les liens insérés

Je souhaite que tous les liens sur lesquels l'utilisateur clique soient ouverts dans InAppBrowser ou dans le navigateur système. Cependant, tout s'ouvre dans la vue Web.

J'ai essayé de nombreuses choses.

gap:// est dans la politique de contenu URL sont correctement codées Fait un window.open = (url, target?, opts?) => this.iab.create(encodeURI(url), '_blank', 'location=yes,hidden=no'); dans le app.component.ts

Mon autre code fonctionne où cliquer sur un lien ouvre la InAppBrowser correctement, mais cela ne semble pas travailler sur des liens réguliers <a href

Tout le monde semble avoir une sorte de problème avec InAppBrowser, quelle est la façon définitive de faire cela?

+0

Le débogage de window.open() fonctionne correctement, mais cliquer sur un lien dans le contenu ne déclenche pas window.open il accède simplement au lien dans la vue web. –

Répondre

0

Je fais un travail autour comme ci-dessous

  1. S'il vous plaît assurer le plugin InAppBrowser ajouté
  2. Ajouter un code pour le composant à l'événement handleClick
  3. Sur la vue, ajouter et cliquez sur l'événement pour le contenu dynamique

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>

+0

Merci, j'ai fini par faire de même mais je l'ai mis dans un tube parce que le contenu est dynamique au lieu d'un événement. –