在与iOS交互之前,Cordova设备尚未在iOS中启动

oli*_*ra1 11 cordova content-security-policy cordova-ios

我有一个非常奇怪的错误,在用户与操作系统本身交互之前,设备就绪事件不会在iOS设备中触发,这就是按下前面的按钮,通过向下拖动显示通知中心或者拖动设备设置.

一旦用户开始拖动iOS通知中心,就会启动设备.

像这样简单的东西是行不通的:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
  <meta http-equiv="Content-Security-Policy" content="default-src 'self' data:* gap:* tel:* 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" />

  <title></title>

  <!-- cordova script (this will be a 404 during development) -->
  <script src="cordova.js"></script>
</head>

<body>
  <div id="log"></div>

  <script type="text/javascript">
    var log = document.getElementById("log");
    if(window.cordova){
        log.innerHTML = "with cordova";
        document.addEventListener("deviceready", function onDeviceReady(){
            log.innerHTML = "deviceready";
        }, false);
    }else{
        log.innerHTML = "with browser";
    }
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

oli*_*ra1 27

问题非常微妙.我花了大约4小时调试iOS为什么cordova没有开火,直到我看到我只是错过了两个//,就在这里:

  <meta http-equiv="Content-Security-Policy" content="default-src 'self' data:* gap://* tel:* 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" />
Run Code Online (Sandbox Code Playgroud)

gapContent-Security-Policy中的那个小的必须有两个//才能工作.这解决了我的错误,我仍然不明白为什么.-.

希望这可以帮助!

  • 非常感谢,它也固定在这里 (2认同)