2012-08-08 39 views
5

Windows Phone 7 için bir phonegap uygulaması oluşturmaya çalışıyorum. "Backbutton" olayının belgelerini takip etmeye çalışıyorum (http://docs.phonegap.com/en/ 2.0.0/cordova_events_events.md.html # backbutton), ancak işe yaramış gibi görünmüyor."backbutton" olayı tetiklenmiyor

"Deviceready" olayı tetikleniyor, ancak "backbutton" olayı çalışmıyor. Visual Studio Windows Phone emülatörünü derlerken ve çalıştırırken onDeviceReady işlevi çağrılır ve "Aygıt hazır" kaydedilir, ancak emülatör geri düğmesine basıldığında uygulama çıkar ve konsolda hiçbir şey kaydedilmez. Geri düğmesine basıldığında, OnBackKeyDown işlevi çalıştırılmalıdır.

resmi doc kod kopya:

<html> 
    <head>  
     <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> 
     <script type="text/javascript"> 
      function onLoad() { 
       document.addEventListener("deviceready", onDeviceReady, false); 
      } 
      function onDeviceReady() { 
       console.log("Device ready"); 
       document.addEventListener("backbutton", onBackKeyDown, false); 
      } 
      function onBackKeyDown() { 
       console.log("Back button pressed"); 
      } 
     </script> 
    </head> 
    <body onload="onLoad()"> 
     <div></div> 
    </body> 
</html> 
+3

[SSCCE] (http://robzu.com/sscce-short-self-contained-correct-compilable-example/) – RobB

+1

Bu sorunu proje şablonunu kullanarak 2.0.0'dan itibaren fiziksel bir aygıtta yeniden oluşturabilirim. WP 7.5 ile Nokia Lumia 800 (7.10.8773.98). Bir hata raporunu doldurmanızı ve bağlantıyı buraya göndermenizi öneririm. https://issues.apache.org/jira/secure/Dashboard.jspa – Loda

+0

https://issues.apache.org/jira/browse/CB-1218 bir hata raporu doldurdum. Bunun için oy verin! – Loda

cevap

3

Cordova-1.8.1.js'nin bazı bölümlerini cordova-2.0.0.js'ye kopyalayarak bunu düzeltmeyi başardım.

1.8.1'de, aşağıdakileri arayın: var NamedArgs ve tüm nesneyi 2.0.0'a kopyalayın. 2.0.0 yılında

, aramak: var command = service + "/" + action + "/" + callbackId + "/" + JSON.stringify(args); ve ile değiştirin: güzel bir çözüm olmayabilir

if (action == 'overridebackbutton') { 
    if (NamedArgs[service] && NamedArgs[service][action]) { 
     var argNames = NamedArgs[service][action]; 
     var newArgs = {}; 
     var len = Math.min(args.length,argNames.length); 

     for(var n = 0; n < len; n++) { 
      newArgs[argNames[n]] = args[n]; 
     } 

     args = newArgs; 
    } 
    else if(args && args.length && args.length == 1) { 
     args = args[0]; 
    } 
} 
var command = service + "/" + action + "/" + callbackId + "/" + JSON.stringify(args); 

Bu, ama benim için çalışıyor.

+0

Yukarıdaki kodu kullanarak, aşağıdaki ifadeyi kullanarak varsayılan geri düğme davranışını (exit app) etkinleştirebilir/devre dışı bırakabilirsiniz: Cordova.exec (null, null, "CoreEvents", "overridebackbutton", [true]); Veya Veya Cordova.exec (null, null, "CoreEvents", "overridebackbutton", [false]); – opznhaarlems

İlgili konular