cordova / phonegap onclick不起作用

时间:2016-04-24 23:00:06

标签: javascript android cordova onclick listener

我尝试创建一个按钮,在单击事件后启动警报。这样的事情:

    <body>
    <div class="app">
        <h1>Apache Cordova</h1>
        <div id="deviceready" class="blink">
            <p class="event listening">Connecting to Device</p>
            <p class="event received">Device is Ready</p>

        </div>
        <button onclick="alert('salut')" id="boutonAlerte">Alerte</button>
    </div>
    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/index.js"></script> </body>

但问题是我的onclick不起作用。很多人告诉我在javascript上尝试它,所以我决定写这样的东西:

function onAlertClick() {
  alert("ceci est une alerte");
}

alert("test2");

var bA = document.getElementById("boutonAlerte");
bA.addEventListener("onclick", onAlertClick());

但这是一回事。

有什么想法吗?

8 个答案:

答案 0 :(得分:2)

尝试添加jQuery点击事件,这对我的cordova应用程序正常工作

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.3.js"></script>

<script type="text/javascript">
   $("#boutonAlerte").click(function(){
       alert("ceci est une alerte");
   });
</script>

这是JSFiddle链接

https://jsfiddle.net/9v85ku5y/

答案 1 :(得分:2)

解决方案

//更改t2

内容的功能
function modifyText() {
  var t2 = document.getElementById("t2");
  if (t2.firstChild.nodeValue == "three") {
    t2.firstChild.nodeValue = "two";
  } else {
    t2.firstChild.nodeValue = "three";
  }
}

//将事件监听器添加到表

var el = document.getElementById("outside");
el.addEventListener("click", modifyText, false);

答案 2 :(得分:1)

onclick不会在cordova应用上被触发,因为用户不会“点击”,而是“点击”。您可以使用像Ionic这样的体面移动框架,并使用ng-click,它会自动为您解决问题,因为它包含ngTouch

如果您不想使用角度等大型框架,可以使用Zepto.js,并使用$(".element").on('tap', callback);来监听点按事件。或$(".element").on('tap click', callback);收听点击和点击事件。

Chrome开发工具具有良好的移动仿真功能,可触发点击事件。如果您想在Chrome中调试应用程序,可能会有所帮助。

答案 3 :(得分:1)

我听说点击可以使“点击”事件起作用。诀窍是当用户点击触发点击事件时,以这种方式将 css cursor 属性添加到“指针”。

以下是使用此技巧的一些示例:

function clickEvent(element, callback){
    element.setAttribute("style", "cursor: pointer;");
    element.addEventListener("click", callback);
}

clickEvent(document.getElementById("mybutton"), function(){
    alert("Clicked");
});

通过使用“clickEvent”函数,你可以让“click”工作

答案 4 :(得分:0)

定义一个稍后可以使用的点击处理程序:

var clickHandler = ('ontouchstart' in document.documentElement ? "touchstart" : "click");

$("a").bind(clickHandler, function(e) {
    alert("clicked or tapped. This button used: " + clickHandler);
});

这将触发点击非触摸设备并触摸触摸设备上的触摸屏。

如果这样说,我强烈建议您使用快速点击,并使用常规点击事件。使用上述解决方案,当您在其上滑动以滚动页面时,您将在链接上触发“touchstart” - 这是不理想的。

答案 5 :(得分:0)

您可以尝试执行以下操作:

$("#boutonAlerte").on('click', function(){ 
 alert("Clicked!");
});

然后从按钮标记中删除onclick,并确保在HTML o课程中包含jQuery库。

如果您只想使用JavaScript,请执行以下操作:

<button onclick="myFunction();" id="boutonAlerte">Alerte</button>

<script> 
  function myFunction(){
   alert("clicked!");
  }
</script>

答案 6 :(得分:0)

这是一个jQuery示例

html

            <a href="#" class="start-button">EXECUTE</a>    

jquery

$(".start-button").click(function (e) {  //note that 'onclick="HandleExec();return false;" doesnt work
    e.preventDefault();
    // here you can handle the click code you wanted
});

确保您调用event.preventDefault();因此它不会尝试转到html标签中的href。在这种情况下,这只会重新加载cordova应用。

答案 7 :(得分:-1)

实际上,解决方案非常简单。 您希望使click事件起作用的所有元素都应具有CSS规则“ cursor:pointer;”

您可以在此处找到一个有效的示例: https://haensel.pro/apache-cordova/apache-cordova-ios-click-event-not-working-quick-how-to