InAppBrowser.open在浏览器中打开而不是WebView

时间:2017-11-12 19:40:59

标签: cordova phonegap inappbrowser cordova-ios

目标是在应用程序启动时在webview中打开外部URL。

我创建了新的Cordova项目:

cordova create test
cd test
cordova platform add ios
cordova plugin add cordova-plugin-inappbrowser

我在www/index.html

中内联了此脚本
<script>
  document.addEventListener("deviceready", onDeviceReady, false);
  function onDeviceReady() {
    cordova.InAppBrowser.open('https://google.com', '_self');
  }
</script>

我使用cordova run ios测试应用,app启动,然后我知道了:

  

拒绝执行脚本,因为它的哈希值,其随机数或“不安全 - 内联”#39;既不出现在script-src指令中,也出现在内容安全策略的default-src指令中。

所以我将'unsafe-inline'添加到内容安全策略标记中,它变为:

  <meta 
    http-equiv="Content-Security-Policy"
    content="
      default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline'; 
      style-src 'self' 'unsafe-inline'; 
      media-src *; 
      img-src 'self' data: content:;">

我使用cordova run ios测试应用,app启动,但它在Safari中打开https://google.com

enter image description here

我该如何在Cordova webview中打开网址?

我也试过了window.location="https://google.com",同样的行为。

2 个答案:

答案 0 :(得分:7)

我在config.xml

中错过了这个
<allow-navigation href="*" />

我以某种方式错过了the docs

  

默认情况下,仅允许导航到file:// URL。要允许其他URL,您必须在config.xml中添加标记:

答案 1 :(得分:0)

docs看起来您需要将target设置为_blank才能在InAppBrowser中打开:

cordova.InAppBrowser.open('https://google.com', '_blank');
  

_self :如果网址在白名单中,则在 Cordova WebView 中打开,否则会在 InAppBrowser 中打开。

     

_blank :在 InAppBrowser 中打开。

     

_system :在系统的网络浏览器中打开。