启动应用时不会触发deviceReady事件。
从屏幕顶部向下拖动通知列表然后释放,然后启动deviceReady。
同样,在拖动和释放通知之前,尝试在inAppBrowser中显示页面不会显示。
config.xml中的关键元素是: -
<gap:plugin name="cordova-plugin-whitelist" version="1.0.0" source="npm" />
<gap:plugin name="cordova-plugin-inappbrowser" source="npm" version="1.0.1" />
<gap:plugin name="cordova-plugin-device" source="npm" version="1.0.1" />
<preference name="permissions" value="none"/>
<preference name="fullscreen" value="true" />
<preference name="exit-on-suspend" value="true" />
HTML: -
<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Home</title>
<meta http-equiv="Content-Security-Policy" .... />
</head>
<body >
<div id="idSplash" class="textCenter" >
<div id="idSplashHeader">
<div class="headerImg"></div>
</div>
<div>
<div id="idSplashMessage">Starting up ...</div>
</div>
<div id="idSplashBody"></div>
<div id="idSplashFooter"><a id="idTestLink" href="javascript:null" target="_blank">Click here for google</a></div>
</div>
<!-- ************************************************************************** -->
<script src="js/jquery-2.0.3.min.js" type="text/JavaScript" ></script>
<script type="text/JavaScript">
$(document).ready(function () {
function onReady() {
$("#idSplashMessage").text("deviceReady");
alert("deviceReady");
}
document.addEventListener("deviceReady", onReady, false);
$("#idTestLink").click(function () {
var win = window.open(encodeURI("http://www.google.co.uk"), '_blank', 'location=yes');
return false;
});
});
</script>
<script src="cordova.js" type="text/JavaScript"></script>
</body>
</html>
答案 0 :(得分:2)
问题的根源是在html中包含内容安全策略。
虽然我认为CSP完全有效,并且没有引起Android的任何问题,但我将其删除了,这使得IOS版本能够正常运行。
由于白名单插件中的错误日志表明需要CSP,因此首先添加了CSP。
答案 1 :(得分:0)
@Grebe, 对于Cordova / Phonegap的新手来说,这是一个常见的误解。
来自:Top Mistakes by Developers new to Cordova/Phonegap
<强> 4。在代码中,没有听取'deviceready&#39;事件强>
(...)我们需要的section of documentation。
这是每个Cordova应用程序都应该使用的非常重要的事件。
Cordova由两个代码库组成:native和JavaScript。在加载本机代码时,会显示自定义加载图像。但是,只有在DOM加载后才会加载JavaScript。这意味着您的Web应用程序可能会在加载之前调用Cordova JavaScript函数。
当Cordova满载时,Cordova deviceready事件将会激活。设备触发后,您可以安全地调用Cordova功能。
这意味着您必须在调用任何其他库之前执行此操作。
这也意味着您需要在 jquery 之前加载cordova.js
。
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// _OR_ JUST
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is loaded and it is now safe to make calls Cordova methods
//
function onDeviceReady() {
document.addEventListener("pause", onPause, false);
$(document).ready(function () {
// Call the usual stuff.
}
}