Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A HREF's are being ignored using WKWebView on iOS #592

Open
3 tasks done
jtibbles opened this issue Dec 12, 2019 · 16 comments
Open
3 tasks done

A HREF's are being ignored using WKWebView on iOS #592

jtibbles opened this issue Dec 12, 2019 · 16 comments

Comments

@jtibbles
Copy link

jtibbles commented Dec 12, 2019

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
@netomarchiori
Copy link

I’m Experiencing the same issue with tel: links not working

@RichardBoyder
Copy link

any updates on this? Same here... tel: and href: seem to be ignored

@harnemo
Copy link

harnemo commented Mar 31, 2020

It's the same for me, but works if I for example use "http://www.facebook.com". But not most other links.

@iamrsojitra
Copy link

@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 😛

@yogii
Copy link

yogii commented Jun 19, 2020

@vc-rakesh ,
I am making build through automation software like Jenkins . is it possible to change plugin file ?

@iamrsojitra
Copy link

@yogii Maybe you can copy plugin file using below tag in config.xml at an appropriate location.

OR you can fork plugin repository, make changes and add it to your package.json file 😊

<resource-file src="" target="" />

@jtibbles
Copy link
Author

@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 :)

@netomarchiori
Copy link

@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.

@anmolghosh
Copy link

Any update here?

@AdriVanHoudt
Copy link

This might be due to #600

@jumamfa
Copy link

jumamfa commented Oct 13, 2020

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?

hvaughan3 pushed a commit to hvaughan3/cordova-plugin-inappbrowser that referenced this issue Oct 16, 2020
@gregtzar
Copy link

+1 wtf

@tictacmobile
Copy link

The patch above only worked for me after downloading the latest cordova-ios, ios 6.2.0-nightly.2020.10.27.cb20c9bb.

tel: and sms: hrefs were still giving the infamous "Unsupported url" message, though.
My solution is to open my own page in the inAppbrowser and have the appropriate tel:, sms: and mailto: links there.
In my app.js:

$(document).on('click', 'a[href^=mailto], a[href^=tel], a[href^=sms]', function(eb) {
eb.preventDefault();

    var $this = $(this); 

   cordova.InAppBrowser.open(mobUrl + '/ios/ContactLinks.jsp?href='+ $this.attr('href'), '_blank', 'location=no'); 
});

@fernandoghisi
Copy link

fernandoghisi commented Dec 9, 2020

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 also works 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;
 }
}

@tictacmobile
Copy link

tictacmobile commented Dec 9, 2020 via email

@jay34fr
Copy link

jay34fr commented Jan 29, 2021

@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 😛

Thx a lot my friend @vc-rakesh !!! 👍🏻👍🏻👍🏻👍🏻👍🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests