【问题标题】:InAppBrowser.open opens in browser instead of the WebViewInAppBrowser.open 在浏览器而不是 WebView 中打开
【发布时间】:2017-11-12 19:40:58
【问题描述】:

目标是在应用启动时在 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 测试应用程序,应用程序启动,我得到了这个:

拒绝执行脚本,因为其哈希、随机数或“不安全内联”既未出现在 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 测试应用程序,应用程序启动,但它在Safari 中打开https://google.com

我到底如何在 Cordova 网络视图本身中打开 url?


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

【问题讨论】:

    标签: cordova phonegap inappbrowser cordova-ios


    【解决方案1】:

    我在config.xml 中错过了这个:

    <allow-navigation href="*" />
    

    我不知何故错过了the docs

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

    【讨论】:

      【解决方案2】:

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

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

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

      _blank:在 InAppBrowser 中打开。

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

      【讨论】:

      • 不,这只是打开the inapp browser,相反,我希望该 URL 在 Cordova 的 web 视图本身中打开。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2021-04-02
      相关资源
      最近更新 更多