phonegap - menubutton不会解雇任何东西

时间:2011-10-13 13:53:43

标签: javascript android cordova

我有以下代码来测试菜单按钮:

<script type="text/javascript" cahrset="utf-8">     
    //wait till device is ready
document.addEventListener("deviceready", onDeviceReady(), false);

//add a menu button event handler
function onDeviceReady() {
    alert('deviceready');
    document.addEventListener("menubutton", onMenuKeyDown(), false);
}
    //fired when menubutton of device is clicked
function onMenuKeyDown() {
    alert('menu key down');
}

</script>

然而,当我按下菜单按钮时,没有任何反应。 Logcat没有说什么,但我猜这是因为它来自标签“web console”,它可能很有用:

10-13 15:46:16.720: INFO/Web Console(13969): Error in success callback: Network Status1 = TypeError: Cannot read property 'apply' of undefined at :-2167

我从Phonegap API Reference开始遵循本教程,但它似乎无法按下我的菜单按钮。 任何帮助?非常感谢,daniel

编辑:也许这有助于您了解最新情况:当我按下菜单按钮时,logcat显示

10-18 09:21:52.560: WARN/WindowManager(152): statePower =normal

此外,事件“searchbutton”也不起作用

3 个答案:

答案 0 :(得分:3)

从我所看到的情况来看,这听起来像是听众的问题。通过在函数名称的末尾添加括号,您可以在设置侦听器时立即调用该函数,而不是设置事件的引用以便稍后触发。

尝试:

document.addEventListener("deviceready", onDeviceReady, false);

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

希望这有帮助!

答案 1 :(得分:0)

检查您的正文标记。确保它调用 onload()函数。像这样:

<body onload="onLoad()">

答案 2 :(得分:0)

好的,这个对我有好处

var menuOpen = true;
var menuDiv = "";
function onLoad(){
        document.addEventListener("deviceready", onDeviceReady, false);
        menuDiv = document.querySelector("#menu");
}
function onDeviceReady(){

            document.addEventListener("menubutton", onMenuKeyDown, false);
}
function onMenuKeyDown() {

                if(menuOpen) {
                    console.log("close the menu");
                    menuDiv.style.display="none";
                    menuOpen = false;
                } else {
                        console.log("open the menu");
                        menuDiv.style.display="block";
                        menuOpen = true;
                }
}