2016-03-22 11 views
0

Ich schreibe eine Cordova (Version 6) -Anwendung für ein Android 4.4-Gerät. Hier versuche ich, die Ereignisse des Knopfdrucks zu erfassen, z. Lautstärke-Abwärts Taste. Leider muss ich die App auf einem Server hosten. Das bedeutet, dass alle HTML-, CSS- und JS-Dateien remote geladen werden. Während die index.html der App selbst enthält nur:Cordova-Anwendung auf dem Server (nicht auf dem Gerät) - Ereignisse nicht ausgelöst

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="Content-Security-Policy" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> 
    <title>My App</title> 

    <script type="text/javascript"> 
     function init() { 
     window.location.href="http://example.com:3000/myapp"; 
     } 
    </script> 
    </head> 
    <body id="body" onload="init();"> 
    </body> 
</html> 

Auf der Server-Seite des cordova-js wird mit injizierten erfolgreich: <script type="text/javascript" src="/assets/cordova.js"></script>

Ich habe die cordova-js von mir gebaut, dieses Repository und deren Dokumentation: https://github.com/apache/cordova-js


die meisten der serverseitigen cordova Code läuft gut! Z.B. Ich habe einige Plugins hinzugefügt, die alle funktionieren (wifi-information, show-toast-messages, und so weiter ...). Aber leider ist der Taste-Hörer für Menü, zurück, Lauter, Leiser arbeitet nicht mehr! Sie funktionierten, als der Cordova-Code direkt auf das Gerät geladen wurde, aber seit ich einen Remote-Server einsetze, funktioniert es nicht mehr.

JS-Datei von Server:

//Gets called from the body-tag of the html-site - works! 
function onLoad() { 
    document.addEventListener("deviceready", onDeviceReady, false); 
} 

function onDeviceReady() { 
    //This works! 
    console.log("onDeviceReady"); 

    //This doesn't do anything (but also no error messages) 
    navigator.app.overrideButton("backbutton", true); 
    navigator.app.overrideButton("menubutton", true); 
    document.addEventListener("backbutton", onBackKeyDown, false); 
    document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false); 
    document.addEventListener("menubutton", onMenuKeyDown, false); 

    //Plugins that are loaded from here all work! 
} 

function onMenuKeyDown(event) { 
    //This doesn't work 
    console.log("menu pressed"); 
} 

function onBackKeyDown(event) { 
    //This doesn't work 
    console.log("back pressed"); 
} 

function onVolumeUpKeyDown() { 
    //This doesn't work 
    console.log("Volume up pressed"); 
} 

mir jemand sagen kann, warum dieser Code funktioniert nicht mehr und mir helfen, dieses Problem beheben?

Antwort

0

wie die Sie interessieren ...

//Gets called from the body-tag of the html-site - works! 
    function onLoad() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

    function onDeviceReady() { 
     //This works! 
     console.log("onDeviceReady"); 
    } 



    document.addEventListener("backbutton", onBackKeyDown, false); 

    document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false); 

    document.addEventListener("menubutton", onMenuKeyDown, false); 

    function onMenuKeyDown(event) { 

     console.log("menu pressed"); 
    } 

    function onBackKeyDown(event) { 

     console.log("back pressed"); 
    } 

    function onVolumeUpKeyDown() { 

     console.log("Volume up pressed"); 
    } 
Verwandte Themen