phonegap app中的外部链接无法正常打开

时间:2013-09-07 17:13:48

标签: cordova phonegap-plugins phonegap-build inappbrowser

所以我有一个带Phonegap 2.9.0的phonegap项目,并使用PhonegapBuild构建 我在我的应用程序中有外部链接,我想打开inapp或使用我的应用程序之外的默认设备浏览器。我对两种解决方案都很满意。今天我的应用程序打开链接inapp但它全屏,无法缩放,并且没有按钮返回应用程序...
我试图找出一个解决方案好几天,并在这里看同样的问题,但没有什么工作好。

有人可以清楚地解释一下这些东西是什么,以及有什么不同的选择/参数,因为我可以说它根本不清楚/容易!

Q1:
我首先要问的是:在文件config.xml中,对于phonegap 2.3.0,现在不推荐使用首选项stay-in-webview吗?那么没什么好希望的呢?

Q2: 我通过window.open和目标系统/ blank / self阅读并尝试了很多插件InAppBrowser,但对我来说没有任何区别。我留在InApp但没用,因为没有导航按钮 我在这里错过了什么吗?

plugin name="InAppBrowser" value="CDVInAppBrowser"

5 个答案:

答案 0 :(得分:19)

  

我首先要问的是:在文件config.xml中,对于phonegap 2.3.0,现在已经弃用了首选的stay-in-webview吗?那么没什么好希望的呢?

这是对的。如果你使用2.9

,甚至不担心这个设置
  

我通过window.open和目标系统/ blank / self阅读并尝试了很多插件InAppBrowser,但对我来说没有任何区别。我留在InApp但没用,因为没有导航按钮。我在这里错过了什么吗?

我也遇到了一些问题。他们的文档有点分散,需要全部阅读。以下是我如何运作:

  1. 确保您希望使用inappbrowser的每个网页都有<script src="phonegap.js"></script>
  2. 您不需要在config.xml中包含插件标记。我很确定大约2.5,他们在核心构建功能中包含了inappbrowser。
  3. 要在inappbrowser中打开链接,请使用此javascript:

    function openURL(urlString){
        myURL = encodeURI(urlString);
        window.open(myURL, '_blank');
    }
    

    这将打开inappbrowser中传递的URL。如果您将window.open(myURL, '_blank');更改为window.open(myURL, '_system');,则会在系统浏览器中打开传递的网址。

  4. 最后,您的商品点击如下所示:

    <a href='#' onclick='openURL("http://www.urlyouwant")/>
    

    或者您可以将事件列表器附加到对象,但我认为您明白了这一点。

  5. 此外,InAppBrowser还有许多可以附加到它的事件侦听器。如果您对这些感兴趣,请查看documentation

    重要!!!!别忘了第1步!

    希望这有帮助。

答案 1 :(得分:10)

在Android和iOS中有两种不同的方式可以打开网址。

FOR IOS使用以下代码: window.open("http://google.com", '_system');

和Android使用以下代码: navigator.app.loadUrl("http://google.com", {openExternal : true});

答案 2 :(得分:3)

Dom的回答适用于使用PhoneGap 2.9.0

HOWEVER ,就像他说按照第1步一样非常重要。我正在使用https://build.phonegap.com来编译我的应用程序而且我使用了  <script type="text/javascript" charset="utf-8" src="cordova.js"></script>让这个代替步骤#1

如果其他所有方法都失败了,请尝试此示例。它是由一位电话缺口员工撰写的:

https://github.com/amirudin/pgb-inAppBrowser

答案 3 :(得分:1)

IF 外部链接无法打开,READ ON。

更新时间:2016-03-20 我已经就此主题创建了一个教程。

  

Tutorial: Phonegap Build external webpage in iframe with whitelist example

如果您正在阅读本文,您可能会注意到此帖子指的是Cordova / Phonegap / Phonegap Build的2.9.0。 2.x已被正式弃用,不再受支持。

如果您使用的是 2.X ,并且想要继续开发应用,请升级。

如果您使用 3.x,4.x或5.x 或更高版本进行编译,请继续阅读。

如果您使用Google搜索外部链接无法打开,那么这就是应该知道的内容。 9月和9月2015年10月,Cordova和Phonegap做出了一些重大改变。这些更改生效white-list ing

White-list表示您*必须*为系统提供您计划使用的外部链接的白名单。整个系统可能会令人困惑。我目前正在撰写博客文章,但在此之前 您需要了解的内容

white-list系统有三(3)个部分

  • 您的config.xml
  • 中提供了白名单
  • 您添加到config.xml
  • 的白名单插件
  • CSP(内容安全政策),放在每个网页上(只有一次,如果你做SPA)

申请不是直截了当的。如果您使用的是 3.x 版本,那么您不需要任何此类版本。如果您使用 4.x或更高,则适用于您。如果您使用 5.x ,则会有更多适用的规则。就像我说的那样,我正在写博客文章,但是这个白名单的东西是如此繁重,我需要说出来。

以下是您需要开始使用的链接。

这里有更多解释:
Timeout AJAX Requests Cordova 5

此外,您可以阅读Top Mistakes by Developers new to Cordova/Phonegap

的#10

如果您很勇敢,可以在Cordova/Phonegap the white-list system

阅读 * RAW * 备注

答案 4 :(得分:0)

window.open似乎无法使用回调方法。 (也许这是一个浏览器限制?)这可能不是OP的问题,但我希望知识可以帮助某人。