Search code examples
javascriptandroidioscordovawebview

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.


Solution

  • 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: