[
https://issues.apache.org/jira/browse/CB-11097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15259787#comment-15259787
]
Juan Miguel commented on CB-11097:
----------------------------------
I was facing this issue for a new application we are working now, and it seems
that is related with now whitelisting mode in Cordova > 6. For us, I have made
a workaround for allow navigation inside iframes (I can't be sure if it could
generate any other problem, but for now we haven't seem anyone).
In cordova project, at
{{Private/Plugins/CDVUIWebViewEngine/CDVIntentAndNavigationFilter.m}}, we've
just modified the *{{shouldOverrideLoadWithRequest:navigationType:}}* method,
changing the behaviour when a navigation is requested via
{{UIWebViewNavigationTypeLinkClicked}}. In the core behaviour, in that case it
stops navigation, and open it in system browser; I've deleted that line
({{\[\[UIApplication sharedApplication\] openURL:url\]}}; ) and modified the
return, to {{return YES;}} and with this two changes it is working as previous
versions of cordova:
{code:java}
case UIWebViewNavigationTypeLinkClicked:
// Note that the rejection strings will *only* print if
// it's a link click (and url is not whitelisted by <allow-*>)
if ([self.allowIntentsWhitelist URLIsAllowed:url logFailure:NO]) {
// the url *is* in a <allow-intent> tag, push to the system
//[[UIApplication sharedApplication] openURL:url];
return YES;
} else {
[errorLogs addObject:[NSString
stringWithFormat:allowIntents_whitelistRejectionFormatString, [url
absoluteString]]];
}
{code}
I think that this behaviour should be configurable from config.xml parameter,
but for us this workaround is enough right now
> Clicking hyperlink in an iframe opens a system browser instead of navigating
> to it
> ----------------------------------------------------------------------------------
>
> Key: CB-11097
> URL: https://issues.apache.org/jira/browse/CB-11097
> Project: Apache Cordova
> Issue Type: Bug
> Components: iOS, Plugin Whitelist
> Affects Versions: 6.0.0, 6.1.1
> Environment: Cordova 6.1.1, iOS platform 4.1.1, developing in Visual
> Studio 2015 with remote build server. Affects Cordova 6.0.0/iOS 4.0.0 and
> later. Same behaviour on simulator and physical phone.
> Reporter: Daniel Åberg
> Labels: ios, triaged
>
> From Cordova 6.0.0/iOS platform 4.0.0 and newer there is a change in behavior
> or bug that stops navigating an anchor tag/hyperlink to an external site from
> working.
> If you have an iframe with a page with an anchor tag in which an href that
> points to for an external domain it will now open it in the system browser
> instead of loading it in the iframe.
> It seems to have something to do how it handles if it’s going to navigate or
> open in a new browser.
> If you have the this in your configuration file you get this behavior:
> <access origin="*" />
> <allow-navigation href="*" />
> <allow-intent href="http://*/*" />
> <allow-intent href="https://*/*" />
> If the allow-intent tags are removed, the iframe will load the page in the
> href, so it seems like it first checks the intents and if its allowed it is
> then opened in a new system browser regardless of other configuration.
> This is a change in behavior, Cordova 5.4.1/iOS 3.9.2 navigated unless you
> used InAppBrowser window.open() with target _system to open in the system
> browser.
> I have tried this with and without having Whitelist and InAppBrowser plugins
> installed, I also tried the Cordova WKWebView Engine and got the same
> behavior so I think it must be something in the iOS platform.
> This issue might be related to the issue reported in CB-10709
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]