cordova-plugin-inappbrowser: A HREF's are being ignored using WKWebView on iOS

Bug Report

Problem

What is expected to happen?

You should be able to click on an href and have it open in a new window.

What does actually happen?

Nothing. No errors but the a href link is completely ignored

Information

Using WKWebView. In config.xml I’ve added as much “allow-navigation”, “access” and “allow-intent” links as possible:

<allow-navigation href="*" /> <access origin="*" /> <access origin="//*"/> <access origin="tel:*" launch-external="yes"/> <access origin="mailto:*" launch-external="yes"/> <access origin="skype:*" launch-external="yes"/> <allow-navigation href="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" /> <allow-intent href="mailto:*" /> <allow-intent href="geo:*" /> <allow-intent href="skype:*" />

I force WKWebView like this: <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /> <preference name="AllowBackForwardNavigationGestures" value="false" /> <preference name="Allow3DTouchLinkPreview" value="false" /> <preference name="WKWebViewOnly" value="true" /> <preference name="UseSwiftLanguageVersion" value="4" /> <preference name="SwiftVersion" value="4.2" />

Command or Code

Just build and test the app

Environment, Platform, Device

all ios devices

Version information

Cordova: Cordova Xcode 11

Checklist

  • I searched for existing GitHub issues
  • I updated all Cordova tooling to most recent version
  • I included all the necessary information above

About this issue

  • Original URL
  • State: open
  • Created 5 years ago
  • Reactions: 5
  • Comments: 16

Commits related to this issue

Most upvoted comments

@jtibbles @netomarchiori @RichardBoyder @harnemo After research and read blogs and all I found a solution for tel: sms: mailto: geo: links after a day like change some code in plugins/cordova-plugin-inappbrowser/src/ios/CDVWKInAppBrowser.m file.

Existing if ([[ url scheme] isEqualToString:@"itms-appss"] || [[ url scheme] isEqualToString:@"itms-apps"]) {

Replaced with if ([[ url scheme] isEqualToString:@"itms-appss"] || [[ url scheme] isEqualToString:@"itms-apps"] || [[ url scheme] isEqualToString:@"tel"] || [[ url scheme] isEqualToString:@"sms"] || [[ url scheme] isEqualToString:@"mailto"] || [[ url scheme] isEqualToString:@"geo"]) {

And its working 🤪 🤨 🧐 boom 😛

When will this be fixed in this repo? It looks like a viable fix was produced and incorporated into subinkrishna’s repo above, but for various reasons, it would be great if the official plugin repo could have this fix applied?

@jtibbles @netomarchiori @RichardBoyder @harnemo After research and read blogs and all I found a solution for tel: sms: mailto: geo: links after a day like change some code in plugins/cordova-plugin-inappbrowser/src/ios/CDVWKInAppBrowser.m file.

Existing if ([[ url scheme] isEqualToString:@"itms-appss"] || [[ url scheme] isEqualToString:@"itms-apps"]) {

Replaced with if ([[ url scheme] isEqualToString:@"itms-appss"] || [[ url scheme] isEqualToString:@"itms-apps"] || [[ url scheme] isEqualToString:@"tel"] || [[ url scheme] isEqualToString:@"sms"] || [[ url scheme] isEqualToString:@"mailto"] || [[ url scheme] isEqualToString:@"geo"]) {

And its working 🤪 🤨 🧐 boom 😛

I did something similar to get it working. Your solution is probably better though 😃

Wonderful, Thank you!

Kind regards,

Carl Zetterberg

Den ons 9 dec. 2020 kl 19:50 skrev Fernando Ghisi <notifications@github.com

:

You can just use the last version of InAppBrowser (4.1.0 for now), and open the external link* using “cordova.InAppBrowser.open” instead of “window.open”. Also, include the “hidden=yes”, like this (it fixed some problems in iOS):

cordova.InAppBrowser.open(‘https://www.google.com/’, ‘_system’, ‘hidden=yes,location=yes’);

*It works also with “mailto”, “tel”, “whatsapp”… for Android, you just have to allow the intent and give permissions in config.xml file, like this:

<access launch-external="yes" origin="tel:*" /> <access launch-external="yes" origin="mailto:*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" />

Finally, if you want all page loads in your app to go through the InAppBrowser, you can simply hook “window.open” during initialization:

$ionicPlatform.ready(function () { if (ionic.Platform.isWebView()) { window.open = cordova.InAppBrowser.open; } }

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/apache/cordova-plugin-inappbrowser/issues/592#issuecomment-741975596, or unsubscribe https://github.com/notifications/unsubscribe-auth/AL7HKDR5YMTCVFWGGYVFXWDST7BHPANCNFSM4J2BBNXQ .

@jtibbles @netomarchiori @RichardBoyder @harnemo After research and read blogs and all I found a solution for tel: sms: mailto: geo: links after a day like change some code in plugins/cordova-plugin-inappbrowser/src/ios/CDVWKInAppBrowser.m file. Existing if ([[ url scheme] isEqualToString:@"itms-appss"] || [[ url scheme] isEqualToString:@"itms-apps"]) { Replaced with if ([[ url scheme] isEqualToString:@"itms-appss"] || [[ url scheme] isEqualToString:@"itms-apps"] || [[ url scheme] isEqualToString:@"tel"] || [[ url scheme] isEqualToString:@"sms"] || [[ url scheme] isEqualToString:@"mailto"] || [[ url scheme] isEqualToString:@"geo"]) { And its working 🤪 🤨 🧐 boom 😛

I did something similar to get it working. Your solution is probably better though 😃

yes, you can algo add “whatsapp” as well as a couple other known URL schemes.