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?