Splendiferous
Splendiferous

Reputation: 763

Cordova 3.0 - Open link in external browser in iOS

How do you open links in the devices native browser when using Cordova 3.0 on iOS?

People have suggested using window.open( url, "_system" ) but this does not work in Cordova 3.0.

My Attempt

if( navigator.app ) // Android
    navigator.app.loadUrl( url, {openExternal:true} )
else // iOS and others
    window.open( url, "_system" ) // opens in the app, not in safari

Does anyone know of a solution that works with Cordova 3.0?
Thanks

Upvotes: 14

Views: 14363

Answers (2)

dannytenaglias
dannytenaglias

Reputation: 363

NOTE: to make window.open('somelink', '_system') to work you now need a device-level plugin, the inAppBrowser. Here are the installing instructions as of Cordova 3.0

From the Docs for 3.0:

As of version 3.0, Cordova implements device-level APIs as plugins. Use the CLI's plugin command, described in The Command-line Interface, to add or remove this feature for a project:

$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git
$ cordova plugin rm org.apache.cordova.core.inappbrowser

These commands apply to all targeted platforms, but modify the platform-specific configuration settings described below:

iOS (in config.xml)

<feature name="InAppBrowser">
    <param name="ios-package" value="CDVInAppBrowser" />
</feature>

I just tested this and it works.

Upvotes: 20

gregmatys
gregmatys

Reputation: 2198

install InAppBrowser plugin:

$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git
$ cordova plugin rm org.apache.cordova.core.inappbrowser

and execute the plugin in your .js file:

//exec(successCallback, errorCallback, pluginName, pluginMethod, params)
cordova.exec(null, null, "InAppBrowser", "open", [url, "_system"]);

Upvotes: 4

Related Questions