Подтвердить что ты не робот

DeviceReady не работает в приложении PhoneGap, как?

У меня есть простое приложение 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 не запускается?

Любые идеи?

4b9b3361

Ответ 1

Попробуйте так:

 document.addEventListener("deviceready", function(){
      alert("123");
 },true);

Ответ 2

Что предоставляет @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 в вашем слушателе, имеет значение по умолчанию, но стоит прочитать, чтобы понять, как работают прослушиватели телефонных разговоров.

Ответ 3

На всякий случай у вас такая же проблема, как и я, я не знал, что нужно включить cordova.js script в ваш index.html, вам не нужно предоставлять файл или ссылку, просто включить эту строку:

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>  

а затем Кордова будет использовать библиотеку при компиляции, после чего отправляется событие.

Ответ 4

этот код работает для меня

<body onload="init()"></body>

function init() {
    document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
    // Now safe to use the Cordova API
}

счастливое кодирование.......

Ответ 5

При использовании PhoneGap 3.0 с WP8 Device Ready не будет работать, потому что Phonegap.js НЕ ВКЛЮЧЕН в решение Visual Studio.

Решение состоит в том, чтобы включить его вручную сейчас.

Ответ 6

Основная причина незатушенного события ondeviceready на одной или нескольких платформах - это когда вы пытаетесь использовать кордону/телефонную таблицу js неправильной платформы.

Ответ 7

Добавить прослушиватель событий для deviceready внутри вас doc ready...

<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
         document.addEventListener("deviceready", onDeviceReady, true); 
    });

    function onDeviceReady() {
        alert ('123');
    }
</script>

Вы не хотите вызывать onDeviceReady(), поскольку это запустит эту функцию при добавлении слушателя...

Ответ 8

Проверьте версии библиотек кордовой/телефонной библиотеки/файлов jar, которые вы добавили вместе с проектом (под libs), и < script src= "~/Scripts/cordova-3.0.0.js" / " > script, который вы ссылаетесь на файлы HTML. Если существует несоответствие, script/" > может не иметь возможности ссылаться на него в проекте. Так что кордова не сможет выполнить ее функциональность.

Ответ 9

В моем случае мне нужно было удалить meta http-equiv = "Content-Security-Policy" content = "...

Ответ 10

Убедитесь, что путь ниже правильный, и оба должны быть включены в 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>

Ответ 11

Я вижу в вашем коде одну проблему, в методе вам нужно добавить onDeviceReady() здесь:

document.addEventListener("deviceready", onDeviceReady(), false);

который работал на меня!

Ответ 12

Вы привязываете обработчик deviceready до того, как вы определили обработчик.

Правильно было бы:

function onDeviceReady(){
    alert('123')
}

document.addEventListener("deviceready", onDeviceReady, false);

И, очевидно, ваш файл phonegap-2.0.0.js(или другая версия) должен быть включен в файл до этой точки.

Ответ 13

Самая большая проблема с примерами PhoneGap - неправильный синтаксис javascript. Пожалуйста, будьте осторожны с этим.. для этого вопроса, onDeviceReady должен иметь фигурные скобки...

document.addEventListener("deviceready", onDeviceReady(), true); 
function onDeviceReady() {
    alert ('123');
}