Android / Phonegap - onClick()不起作用

时间:2012-05-03 16:11:55

标签: javascript android html cordova

我正在使用phonegap,我正在尝试检测onClick,但是Android似乎完全忽略了它,下面是我正在尝试的内容:

<select name="func" onclick="StartButtons();" data-native-menu="true">

我已尝试过onClick的几种变体,包括javascript,jQuery等。但是这些似乎都不起作用。

我注意到onChange有效,但这对我没有多大用处,因为我需要使用一个提示,要求用户确认更改,如果不是则不做任何操作。但是,使用onchange仍会更改下拉列表中的项目。

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:11)

我遇到了与jQuery相同的问题,Android似乎忽略了javascript中的click事件。最初,我的jQuery代码如下所示:

$("#element").click(function () { alert("message"); });

我不得不将其更改为:

$("#element").on("touchend", function () { alert("message"); });

不确定你是否正在使用jQuery,但希望这会有所帮助。

答案 1 :(得分:4)

使用javascript将click事件监听器添加到您的对象。首先向对象添加一个id:

    <select id="obj_id" name="func" data-native-menu="true">

然后调用addEventListener():

    document.getElementById("obj_id").addEventListener("click", StartButtons, false);

Phonegap文档建议您在“deviceready”事件中运行所有javascript代码。所以你的代码应该是这样的:

main.js:

    function StartButtons() { ... }

    function onDeviceReady() {
        ...
        document.getElementById("obj_id")
            .addEventListener("click", StartButtons, false);
        ...
    }

    function init() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

的index.html:

    ...
        <script type="text/javascript" charset="utf-8" src="main.js"></script>
    </head>
    <body onload="init();">
        ...
        <select id="obj_id" name="func" data-native-menu="true">
        ...
    </body>

答案 2 :(得分:2)

user1183085的回答是正确的。 Android不会像网络应用那样识别点击事件,因为移动应用在本机时不是网络,因此这就是为什么设置了phonegap,但因为它与jquery一起工作,而不是直接使用本机java的android库。我把代码放在这里:

点击web按钮或元素以处理所有Web界面,以及用于处理移动界面的特殊按钮或元素。这是我的代码的一部分:

//this handles the login button events for the mobile touch of the user
$("button.login-button").on("touchend", function () {alert('hello touch ! =o' )});

//this handles the login button events for web clicks
$("button.login-button").on("click", function () {alert('hello click ! =o' )});

感谢用户user1183085,它永远解决了我的生活=()

答案 3 :(得分:1)

注意,绑定在Cordova 3.4中的输入上的onclick,不起作用。但它对div元素很有用。考虑到,输入元素是表单元素的一部分,就像select元素一样,它可能是你的问题。

答案 4 :(得分:1)

https://ssl.gstatic.com&#39; unsafe-eval&#39 ;; style-src&#39; self&#39; &#39;不安全直插&#39 ;; media-src *&#34;&gt;

从index.html

中删除此代码

答案 5 :(得分:0)

您是否尝试将方法设置为“方法”而不是“方法();”?所以也许你可以试试你的行:

<select name="func" onclick="StartButtons" data-native-menu="true">

然后希望你的方法会被调用。