我有一个简单的PhoneGap应用程序作为休闲:
<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap powered App</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
<script type="text/javascript" charset="utf-8" src="phonegap-1.3.0.js"></script>
<script src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.mobile-1.0.min.js"></script>
<script type="text/javascript" charset="utf-8">
document.addEventListener("deviceready", onDeviceReady, true);
function onDeviceReady() {
alert ('123');
}
</script>
</head>
<body onload="onDeviceReady()">
<div data-role="page">
<div data-role="header">
<h1>title</h1>
</div><!-- /header -->
<div data-role="content">
<h2>Begin by inserting your credentials.</h2>
...
</div><!-- /content -->
</div><!-- /page -->
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
});
</script>
</body>
</html>
这里发生的是警告alert ('123');
永远不会被解雇。但是,如果我取出其他JavaScript代码并仅保留警报就会被解雇。
此外,如果我使用$(document).ready(function () { alert ('123'); }
,我会收到警报。
这里发生了什么,为什么deviceready
没有被解雇?
有什么想法吗?
答案 0 :(得分:17)
以这种方式尝试:
document.addEventListener("deviceready", function(){
alert("123");
},true);
答案 1 :(得分:16)
@GPRathour提供的功能是因为document.addEventListener()
正在侦听deviceready
,如果是,则运行警报功能。由于两个原因,我没有按你的方式工作:
1)当DOM加载并进入你的body标签时,它正在调用OnDeviceReady()并且监听器从未接到调用,因此phonegap不知道它已准备好运行。
2)你必须在一个函数中调用你的监听器并使用'false':
function init(){
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady(){
alert('123');
}
<body onload="onDeviceReady()"></body>
查看phonegap API,了解为什么在监听器中使用false而不是true,与默认设置有关,但值得阅读以了解phonegap监听器的工作原理。
答案 2 :(得分:9)
如果您遇到与我相同的问题,我不知道是否需要在index.html中包含cordova.js脚本,您不必提供文件或引用,只需包含此内容行:
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
然后Cordova将在编译时使用该库,之后将调度该事件。
答案 3 :(得分:6)
此代码适用于我
<body onload="init()"></body>
function init() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
// Now safe to use the Cordova API
}
快乐的编码.......
答案 4 :(得分:5)
将 PhoneGap 3.0 与 WP8 一起使用时,设备就绪无法正常工作,因为Visual Studio解决方案中不包含 Phonegap.js 。
解决方案是暂时手动包含它。
答案 5 :(得分:2)
在一个或多个平台上解决ondeviceready事件的主要原因是当你尝试使用错误平台的cordova / phonegap js时。
答案 6 :(得分:2)
为你准备好的doc ...中的deviceready添加事件监听器。
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
document.addEventListener("deviceready", onDeviceReady, true);
});
function onDeviceReady() {
alert ('123');
}
</script>
您不想调用onDeviceReady(),因为这会在您添加侦听器时运行该函数...
答案 7 :(得分:1)
检查随项目添加的Cordova / phonegap库/ jar文件的版本(在libs下)和&lt; script src =“〜/ Scripts / cordova-3.0.0.js”/&gt;您在HTML文件中引用的脚本。如果存在不匹配,则&lt;脚本/&GT;可能无法在项目中引用它。因此,cordova无法执行它的功能。
答案 8 :(得分:1)
就我而言,我需要删除 meta http-equiv =“Content-Security-Policy”content =“...
答案 9 :(得分:0)
在定义处理程序之前,您正在将处理程序绑定到deviceready。
正确的是:
function onDeviceReady(){
alert('123')
}
document.addEventListener("deviceready", onDeviceReady, false);
显然你的phonegap-2.0.0.js文件(或其他版本)应该在此之前包含在文件中。
答案 10 :(得分:0)
确保以下路径正确,并且两者都需要包含在html中:
Sheets("5. Resume").Select
ActiveSheet.PivotTables("PivotTable1").PivotSelect "'Tarea IS'[All]", _
xlLabelOnly, True
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
ActiveSheet.PivotTables("PivotTable2").PivotSelect "'Tarea IS'[All]", _
xlLabelOnly, True
ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh
Sheets("6. Reg Err").Select
ActiveSheet.PivotTables("PivotTable3").PivotCache.Refresh
答案 11 :(得分:0)
我在您的代码中看到一个问题,在方法中,您需要在此处添加onDeviceReady()
等于:
document.addEventListener("deviceready", onDeviceReady(), false);
对我有用!!
答案 12 :(得分:-12)
PhoneGap示例的最大问题是不正确的javascript语法。请小心这个..对于这个问题,onDeviceReady应该有大括号......
document.addEventListener("deviceready", onDeviceReady(), true);
function onDeviceReady() {
alert ('123');
}