Почему событие PhoneGap inAppBrowser сработало только во второй раз?

0

следующий код из официального сайта phonegap. Это не работает.

<!DOCTYPE html>
<html>
  <head>
    <title>InAppBrowser.addEventListener Example</title>

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

    // Wait for Cordova to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova is ready
    //
    function onDeviceReady() {
         var ref = window.open('http://apache.org', '_blank', 'location=yes');
         ref.addEventListener('loadstart', function() { alert('start: ' + event.url); });
         ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); });
         ref.addEventListener('exit', function() { alert(event.type); });
    }

    </script>
  </head>
  <body>
  </body>
</html>

После этого я сделал кнопку. при нажатии кнопки откройте браузер приложений.

function onDeviceReady() {
   $('#btn').click(function(){
       var ref = window.open('http://apache.org', '_blank', 'location=yes');
       ref.addEventListener('loadstart', function() { alert('start: ' + event.url); });
       ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); });
       ref.addEventListener('exit', function() { alert(event.type); });
   });
}

когда я нажимаю кнопку в первый раз, никаких предупреждений. Поэтому я нажимаю кнопку "Готово", чтобы закрыть браузер. Затем я нажимаю кнопку второй раз, предупреждения работают. Я повторно развертываю программу и повторяю ее. результаты одинаковы, предупреждения запускаются только во второй раз, когда я нажимаю кнопку. Может ли кто-нибудь сказать мне, почему?

  • 0
    какую версию PhoneGap вы используете? Я думаю, что у меня та же проблема, когда события запускаются только во второй раз - очень странно - хотя проблема существует только на iOS7 (но проблема не существует на iOS 5, 6 или Android 2.2 и 4.4). Я использую PhoneGap 3.1.
Теги:
cordova

1 ответ

2
Лучший ответ

Попробуйте это: возможно, потому, что вы объявляете функцию var ref внутри функции click

<!DOCTYPE html>
<html>
  <head>
    <title>InAppBrowser.removeEventListener Example</title>
    <script type="text/javascript" charset="utf-8" src="jquery.js"></script>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for device API libraries to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Global InAppBrowser reference
    var ref= null;

    function iabLoadStart(event) {
        alert(event.type + ' - ' + event.url);
    }

    function iabLoadStop(event) {
        alert(event.type + ' - ' + event.url);
    }

    function iabLoadError(event) {
        alert(event.type + ' - ' + event.message);
    }

    function iabClose(event) {
         alert(event.type);
         ref.removeEventListener('loadstart', iabLoadStart);
         ref.removeEventListener('loadstop', iabLoadStop);
         ref.removeEventListener('loaderror', iabLoadError);
         ref.removeEventListener('exit', iabClose);
    }

    // device APIs are available
    //
    function onDeviceReady() {
      $('#btn').click(function(){
         ref= window.open('http://apache.org', '_blank', 'location=yes');
         ref.addEventListener('loadstart', iabLoadStart);
         ref.addEventListener('loadstop', iabLoadStop);
         ref.removeEventListener('loaderror', iabLoadError);
         ref.addEventListener('exit', iabClose);
       });
    }

    </script>
  </head>
  <body>
   <button id='btn'>click me</button>
  </body>
</html>
  • 0
    спасибо, но это не работает. Я попробовал только сейчас.
  • 0
    извините я пропустил кнопку и jquery ... исправил код
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню