Cordova, pourquoi InAppBrowser plugin sera nécessaire pour ouvrir les liens dans le navigateur de votre système
J'ai une application Cordova, c'est une simple page de l'application avec un seul fichier HTML.
Tous les liens doivent s'ouvrir dans le navigateur de votre système. Je ne veux pas d'un "embedded" InAppBrowser mais vraiment le système natif /navigateur externe.
Partout on peut trouver des exemple de code à l'aide de InAppBrowser avec quelque chose comme:
window.open('http://apache.org', '_system');
Mais pourquoi avons-nous besoin d'installer InAppBrowser, même si nous n'avons même pas de plan pour l'utilisation d'un navigateur intégré?
Quelqu'un peut-il vraiment expain ce qui est censé être le comportement d'une WebView, concernant la cible d'un lien. Il n'est pas clair ce qu'il est censé faire avec un target=_blank
, mais je ne vois rien d'autre qu'il peut faire, à l'exception de l'ouverture d'une nouvelle fenêtre du navigateur.
Avis que le problème semble être la seule à être avec iOS car avec Android (avec tableau de Concordance du plugin) à l'aide de target=_blank
semble toujours bien fonctionner et de s'ouvrir dans une nouvelle fenêtre de navigateur native.
mais alors pourquoi ne pas créer un plugin qui n'est tout simplement pas un "InAppBrowserPlugin" et de n'ouvrir tous les liens avec _blank dans le navigateur de votre système? Je crois que le plugin est en essayant de résoudre 2 problèmes distincts, l'un d'entre eux n'étant pas clairement indiqué dans le plugin (mais ne pas vraiment sûr que ce n'est pas vraiment expliqué)
Je l'ai fait, et effectivement, il fait toutes les requêtes Ajax échouer sur Android pour autant que je sais. Aussi il n'est pas documentée ici: github.com/apache/cordova-plugin-whitelist
Aussi vous pouvez voir dans le code source du plugin que cette option n'a d'effet que sur Android code natif, et est dépréciée en faveur de
allow-access
selon cet avertissement journal: Found <access launch-external> within config.xml. Please use <allow-intent> instead.
Désolé, ne pas l'essayer avant de commenter, j'ai essayé et vous avez raison. La chose est, cordova est un cadre pour la création d'applications mobiles, de sorte que, toutes les ressources doivent être locales et des liens externes font pas de sens réel (au moins pour moi). Dans le cas où vous en avez besoin, alors vous avez la inAppBrowser plugin, qui permet d'ouvrir les liens sur le inAppBrowser ou dans le navigateur de votre système. C'est vrai que c'est un peu étrange que vous ayez à installer un "inAppBrowser" plugin pour lancer un navigateur externe, mais vous pouvez créer votre propre plugin pour lancer le navigateur sans les inAppBrowser
OriginalL'auteur Sebastien Lorber | 2015-08-25
Vous devez vous connecter pour publier un commentaire.
Donc je vais répondre à ma propre question avec ce que j'ai trouvé.
Remarque je suis le seul à traiter avec iOS et Android (avec tableau de Concordance du plugin) sur Cordova 5.1.1, et il peut ne pas s'appliquer à d'autres plates-formes/versions.
InAppBrowser est nécessaire
Même si vous n'avez pas besoin d'un navigateur intégré, InAppBrowser plugin est requis. Cela rend le
_system
la cible disponible qui déclenche natif plugin code pour ouvrir le navigateur externe.Il semble donc que le plugin est en quelque sorte un "2 en 1" plugin: il permet d'utiliser un navigateur intégré + il permet de façon sécurisée force le système externe de navigateur pour l'ouvrir.
Il n'est pas clair ce que le défaut WebView comportement doit être relatif à
_blank
liens (ni si elle est normalisée en aucune façon pour des WebViews) mais j'ai trouvé aucun moyen d'ouvrir le navigateur externe sur iOS sans ce plugin ou du code natif.Ouverture
_self
dans WebView, et_blank
dans le navigateur natifSi comme moi vous n'avez pas de soins sur le navigateur intégré, mais juste envie d'ouvrir tous les
_blank
cibles pour le natif du navigateur externe dans une application existante, sans trop de douleur (en particulier si l'application est également un site web mobile...), vous pouvez exécuter le code suivant au début de votre application:Sur iOS8 avec Cordova 5.3.3, fenêtre.ouvrir avec target "_blank" ouvre mon local pdf dans le InAppBrowser et pas dans le navigateur natif.
avez-vous correctement exécuté mon
openAllLinksWithBlankTargetInSystemBrowser
fonction? parce qu'il fonctionne très bien pour nous avec iOS8Yep, mais mon PDF est local (c'est à dire 'file://... .pdf') si
Désolé, je suis nouveau avec ionique...où mettre ce code ci-dessus? Quel fichier?
OriginalL'auteur Sebastien Lorber