2012-10-09 10 views
12

Drupal sitemle etkileşime giren Phonegap uygulamasını kullanarak bir Android uygulaması geliştiriyorum. Kullanıcının Drupal sunucusundan çıkış yapmasını istemek için Android "Geri" düğmesine yeniden atadım, ancak sadece giriş sayfasında (açık nedenlerle) devre dışı bırakılmasını istiyorum. Çalışabilirim ancak kullanıcı oturum açma sayfasında bir kez çıkış yapana kadar düğme bir kapatma düğmesi olarak yeniden atanır. Şimdiye kadar sahip olduğum kod:Bir sayfada Android Geri düğmesini nasıl devre dışı bırakabilirim ve diğer tüm sayfalardaki çıkış düğmelerini kullanarak değiştirebilirim

<head> 
     <script> 
     /* Wait until device is ready to re-assign Back button */ 
     document.addEventListener("deviceready", onDeviceReady, false); 
     function onDeviceReady() { 
      document.addEventListener("backbutton", onBackKeyPress, false); 
     } 
     function onBackKeyPress() { 
      /* If the current page is the login page, disable the button completely (aka do nothing) */ 
      if ($.mobile.activePage.attr('id') == 'login_page') { 
      } 

      /* Else, execute log off code */ 
      else { 
       if (confirm("Are you sure you want to logout?")) { 
        /* Here is where my AJAX code for logging off goes */ 
       } 
       else { 
        return false; 
       } 
      } 
     } 
     </script> 
</head> 

Sorun şu ki Geri düğmesi yeniden atanmıyor. Kullanıcı oturumu kapattığında ve giriş sayfasına geri döndüğünde yukarıdaki kodu yeniden çalıştırmak için bir yol bulamıyorum.

Bunun için bir çözüm önermek isteyenler çok minnettar olacaktır!

cevap

4

bu deneyin:

document.addEventListener("backbutton", function(e){ 
    if($.mobile.activePage.is('#login_page')){ 
     e.preventDefault(); 
    } 
    else { 
     if (confirm("Are you sure you want to logout?")) { 
      /* Here is where my AJAX code for logging off goes */ 
     } 
     else { 
      return false; 
     } 
    } 
}, false); 
+0

, sadece bir kez çalışıyor gibi görünüyor, ba varsayılan yürütülmesini engellemek ck düğmesi ve yaprakları, daha sonra geri düğmesi app herhangi bir sayfada işlevsel değil –

19

deviceready önemlidir. Kullanılmıyorsa bazen kimi zaman Geri düğmesini engelleyebilirsiniz. Çoğu zaman hata ayıklamada çalışır, üretim no.

document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 
     document.addEventListener("backbutton", function (e) { 
      e.preventDefault(); 
     }, false); 
} 

DÜZENLEME 2013/11/03 Sıklıkla yapılan hatalardan geliştirme masaüstünde yapılır ve cordova komut hariç olmasıdır. One, mobil sürüm için cordova komut dosyasını eklemeyi unutur.

+0

Benim için çalışır PhoneGap 2.7 – JamesRLamar

+0

Düzenleme için teşekkürler. Benim de davamdı – s3v3n

2
document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() { 
    document.addEventListener("backbutton", function (e) { 
     e.preventDefault(); 
    }, false); 
} 
0

Hazır cihazda düğme eylemi geri geçersiz kılmak zorunda ... burada tam çalışma örneği "index.html"

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Back Button</title> 
    <link rel="stylesheet" type="tex`enter code here`t/css" href="style.css"> 
    <script> 
     function getTitle() { 
      document.getElementById("ct").innerHTML = "DEMO: " + document.title; 
     } 
    </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 
    // 
    function onLoad() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
     getTitle(); 
    } 
    // device APIs are available 
    // 
    function onDeviceReady() { 
     // Register the event listener 
     document.addEventListener("backbutton", onBackKeyDown, false); 
    } 
    // Handle the back button 
    // 
    function onBackKeyDown() { 
     alert('Backbutton key pressed'); 
     console.log('Backbutton key pressed'); 
    } 
    </script> 
    </head> 
    <body onload="onLoad()"> 
    <ul id="nav"> 
     <li><a href="index.html">&larr; Back</a></li> 
     <li><a href="#" id="ct" onclick="location.reload();"></a></li> 
    </ul> 
    </body> 
</html> 

Bu kodu kullanılmış ve geri düğmesi nihayet geçersiz olmasıdır. ...

Ref - bu eğer cümle girer yani benim projede bunu>https://github.com/amirudin/PhoneGapPluginDemo/blob/master/www/evt-backbutton.html

İlgili konular