[ 
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]

Reply via email to