2012-10-09 20 views
12

पर निकास बटन में बदल सकता हूं। मैं अपने ड्रूपल साइट के साथ बातचीत करने वाले फोनगैप का उपयोग करके एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं। मैंने एंड्रॉइड "बैक" बटन को दोबारा सौंप दिया है ताकि उपयोगकर्ता को ड्रूपल सर्वर से लॉग ऑफ करने के लिए संकेत मिले, हालांकि, मैं सिर्फ लॉगिन पेज (स्पष्ट कारणों से) पर अक्षम होना चाहता हूं। मैं इसे काम पर ला सकता हूं लेकिन जब तक कि उपयोगकर्ता लॉग आउट नहीं करता तब तक लॉग इन बटन पर एक बार फिर से असाइन किया जाता है। यहां मेरे पास अब तक का कोड है:मैं एक पृष्ठ पर एंड्रॉइड बैक बटन कैसे अक्षम कर सकता हूं और हर दूसरे पेज

<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> 

समस्या यह है कि बैक बटन फिर से असाइन नहीं किया जाता है। जब उपयोगकर्ता लॉग आउट करता है और लॉगिन पेज पर वापस समाप्त होता है तो मैं उपर्युक्त कोड को फिर से चलाने का कोई तरीका नहीं समझ सकता।

यदि कोई इस के लिए समाधान प्रदान करने के इच्छुक है तो मैं बहुत आभारी रहूंगा!

उत्तर

4

इस प्रयास करें:

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

अपने प्रोजेक्ट में यह कर, तो यह अगर वाक्य में प्रवेश करती है, केवल एक बार चल रहा प्रतीत हो रहा है, बा के डिफ़ॉल्ट निष्पादन रोक सीके बटन और पत्तियां, फिर बैक बटन एप –

19

deviceready महत्वपूर्ण है। यदि उपयोग नहीं किया जाता है, तो कभी-कभी आप बैक बटन को अवरुद्ध कर सकते हैं, कभी-कभी नहीं। अक्सर डीबग में यह उत्पादन संख्या में काम करता है।

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

संपादित 2013-11-03 आम गलती है कि विकास डेस्कटॉप पर किया जाता है और कॉर्डोबा स्क्रिप्ट बाहर रखा गया है है। फिर मोबाइल संस्करण के लिए कॉर्डोवा स्क्रिप्ट शामिल करना भूल जाता है।

+0

पर किसी भी पेज में कार्यात्मक नहीं है मेरे लिए फोनगैप 2.7 – JamesRLamar

+0

संपादन के लिए धन्यवाद। यह मेरा मामला भी था – s3v3n

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

आप डिवाइस तैयार में बटन कार्रवाई वापस ओवरराइड करने के लिए है ... यहाँ एक पूर्ण काम कर उदाहरण "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> 

मैं इस कोड का इस्तेमाल किया और वापस बटन अंत में ओवरराइड की गई है है। ...

रेफरी ->https://github.com/amirudin/PhoneGapPluginDemo/blob/master/www/evt-backbutton.html

संबंधित मुद्दे