如何在PhoneGap的Webview中加载网页?

14

我想要能够在PhoneGap的webview中链接到一个网页,该网页会在同一PhoneGap的webview中加载外部网页。如果我这样做,它会在webview内部加载:

public class App extends DroidGap {
   @Override
   public void onCreate (Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      super.loadUrl("http://google.com");
   }
}

然而,我想先启动一个内部页面,其中包含指向外部页面的链接,所以我这样做:

public class App extends DroidGap {
   @Override
   public void onCreate (Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      super.loadUrl("file:///android_asset/www/index.html");
   }
}

我有一个链接:

<a href="#" onclick="navigator.app.loadUrl('http://google.com')">Google</a>

但是这个链接会在应用程序之外的网络浏览器中启动 Google,而不是在 Phonegap 的 Webview 中启动。我该怎么做来确保链接到外部页面在应用程序的 Phonegap Webview 内启动?


我应该把这个添加到哪里? - MaxRocket
3个回答

18
Ahhh.. 我找到了这个问题的答案,是从这个问题上找到的。 我必须添加

<access origin="www.google.com"/>

将内容添加到 phonegap.xml 文件中。


10

这似乎已经改变了,而且access origin似乎没有效果。如果您正在使用cordova白名单插件,正如标准所示。您需要在config.xml文件中使用allow-navigation。如果没有这个,它将打开您的网络浏览器。

<plugin name="cordova-plugin-whitelist" version="1"/>
<allow-navigation href="https://google.com/*" />

你可以使用 window.location = 'https://google.com' 在 JavaScript 中跳转到另一个网页。


这应该是正确答案。省了我很多烦恼。其他答案对于v4已经过时了。我只是添加了<access origin="*" />。 - Tom Kincaid
我认为<plugin>标签是不必要的,只需要<allow-navigation>。 - SBerg413
我尝试过了,但在CLI 5.1.1中似乎对我无效。在Android上,即使使用<allow-navigation href="*" />并安装了插件,它仍然会在新标签页中打开 :( - Sebastien Lorber
@SebastienLorber,你找到了任何替代方案吗?我也在为同样的问题苦苦挣扎。 - user2990084

3
在最新版本的PhoneGap(1.7)中,Cordova.plist文件中有一个关键字:OpenAllWhitelistURLsInWebView,将其设置为YES。

1
抱歉,这显然只适用于iOS。 - tapmonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接