Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cordova/Phonegap load external site in main Cordova webview

What i want

I have external web-resource that i want cordova webview to simple open and be able to navigate through its inner navigation.

Description

InAppBrowser docs said

The InAppBrowser window behaves like a standard web browser, and can't access Cordova APIs. For this reason, the InAppBrowser is recommended if you need to load third-party (untrusted) content, instead of loading that into the main Cordova webview

So i have an trusted external links (let's say http://www.google.com i want to load in main webview and want to control its process though window.location.href or user links click.

What i tried

Generated hello world app with latest cordova and inserted

window.location.href = 'http://www.google.com/'

to its onDeviceReady. It's config was already having (and i tried to change it to concrete adress)

<access origin="*" />

I also tried window.open and manual user link clicks, but all i've got is dialog to open link in external browser instead of rendering it inside same webview. I also tried InAppBrowser extension, that works fine when i disable navigation bar but it has communication problems and doesn't work on manual link licks and window.location.href changes.

like image 762
user2765683 Avatar asked May 10 '16 13:05

user2765683


1 Answers

Solved this issue using following rules on both ios and android:

<access origin="*" />
<allow-navigation href="*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="tel:*" />
<allow-navigation href="sms:*" />
<allow-navigation href="mailto:*" />
<allow-navigation href="geo:*" />

If you stuck on same problem you also need to know following:

  • Multiple cordova versions has different rules structure and behaviours when docs isn't always correct about current version. In my researches i found this article very useful https://github.com/jessemonroy650/top-phonegap-mistakes/blob/master/whitelist-matrix.md
  • My main problem was "not knowing" that allow-intent overrides allow-navigation. Make sure you understand how it works
like image 132
user2765683 Avatar answered Oct 23 '22 04:10

user2765683