Ответ 1
Попробуйте так:
document.addEventListener("deviceready", function(){
alert("123");
},true);
У меня есть простое приложение 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
не запускается?
Любые идеи?
Попробуйте так:
document.addEventListener("deviceready", function(){
alert("123");
},true);
Что предоставляет @GPRathour, потому что document.addEventListener()
прослушивает deviceready
, а затем, если true, запускает вашу функцию предупреждения. Я не работал, как у вас было это из-за двух причин:
1), когда DOM загрузился и дошел до вашего тега тела, он вызывал OnDeviceReady(), и слушатель так и не получил вызов, поэтому телефонная книга не знает, что он готов к запуску.
2), вы должны будете вызвать своего слушателя из функции и использовать "false":
function init(){
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady(){
alert('123');
}
<body onload="onDeviceReady()"></body>
Проверьте API-интерфейс phonegap относительно того, почему использовать функцию false вместо true в вашем слушателе, имеет значение по умолчанию, но стоит прочитать, чтобы понять, как работают прослушиватели телефонных разговоров.
На всякий случай у вас такая же проблема, как и я, я не знал, что нужно включить cordova.js script в ваш index.html, вам не нужно предоставлять файл или ссылку, просто включить эту строку:
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
а затем Кордова будет использовать библиотеку при компиляции, после чего отправляется событие.
этот код работает для меня
<body onload="init()"></body>
function init() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
// Now safe to use the Cordova API
}
счастливое кодирование.......
При использовании PhoneGap 3.0 с WP8 Device Ready не будет работать, потому что Phonegap.js НЕ ВКЛЮЧЕН в решение Visual Studio.
Решение состоит в том, чтобы включить его вручную сейчас.
Основная причина незатушенного события ondeviceready на одной или нескольких платформах - это когда вы пытаетесь использовать кордону/телефонную таблицу js неправильной платформы.
Добавить прослушиватель событий для deviceready внутри вас doc ready...
<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
document.addEventListener("deviceready", onDeviceReady, true);
});
function onDeviceReady() {
alert ('123');
}
</script>
Вы не хотите вызывать onDeviceReady(), поскольку это запустит эту функцию при добавлении слушателя...
Проверьте версии библиотек кордовой/телефонной библиотеки/файлов jar, которые вы добавили вместе с проектом (под libs), и < script src= "~/Scripts/cordova-3.0.0.js" / " > script, который вы ссылаетесь на файлы HTML. Если существует несоответствие, script/" > может не иметь возможности ссылаться на него в проекте. Так что кордова не сможет выполнить ее функциональность.
В моем случае мне нужно было удалить meta http-equiv = "Content-Security-Policy" content = "...
Убедитесь, что путь ниже правильный, и оба должны быть включены в html:
<script type="text/javascript" src="cordova.js"></script>
<script src="js/jquery-1.11.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
document.addEventListener("deviceready", onDeviceReady, false);
});
function onDeviceReady() {
alert("inside onDeviceReady");
}
</script>
Я вижу в вашем коде одну проблему, в методе вам нужно добавить onDeviceReady()
здесь:
document.addEventListener("deviceready", onDeviceReady(), false);
который работал на меня!
Вы привязываете обработчик deviceready до того, как вы определили обработчик.
Правильно было бы:
function onDeviceReady(){
alert('123')
}
document.addEventListener("deviceready", onDeviceReady, false);
И, очевидно, ваш файл phonegap-2.0.0.js(или другая версия) должен быть включен в файл до этой точки.
Самая большая проблема с примерами PhoneGap - неправильный синтаксис javascript. Пожалуйста, будьте осторожны с этим.. для этого вопроса, onDeviceReady должен иметь фигурные скобки...
document.addEventListener("deviceready", onDeviceReady(), true);
function onDeviceReady() {
alert ('123');
}