簡體   English   中英

cordova/phonegap onclick 不起作用

[英]cordova/phonegap onclick doesn't work

我嘗試創建在單擊事件后啟動警報的按鈕。 類似的東西:

    <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());

但這是同樣的事情。

有任何想法嗎 ?

嘗試添加jQuery click事件,該事件在我的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/

//更改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);

在用戶的應用程序上不會觸發onclick,因為用戶不是“點擊”,而是“點擊”。 您可以使用像Ionic這樣的體面的移動框架,並使用ng-click ,它會自動為您解決問題,因為它包含ngTouch

如果您不想使用像angular這樣的大型框架,則可以使用Zepto.js ,並使用$(".element").on('tap', callback); Zepto.js 監聽點擊事件。 $(".element").on('tap click', callback); 監聽點擊和點擊事件。

Chrome開發人員工具具有良好的移動仿真功能,可以觸發點擊事件。 如果您想在Chrome中調試應用,這可能會有所幫助。

我聽說點擊使“點擊”事件起作用。 訣竅是以這種方式將 css cursor 屬性添加到“指針”,當用戶點擊觸發點擊事件時。

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

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

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

通過使用函數“clickEvent”,你可以讓“click”工作

定義一個供以后使用的點擊處理程序:

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

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

這將觸發非觸摸設備上的點擊,並觸發觸摸設備上的touchstart。

話雖如此,我強烈建議您改為使用“快速點擊”,並使用常規點擊事件。 使用上述解決方案,例如,當您在鏈接上滑動以滾動頁面時,您將在鏈接上觸發“ touchstart”-這並不理想。

您可以嘗試執行以下操作:

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

然后從按鈕標簽中刪除onclick ,並確保您在HTML o課程中包括了jQuery庫。

如果只想使用JavaScript,則應該執行以下操作:

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

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

這是一個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應用程序。

實際上,解決方案非常簡單。 您希望使click事件起作用的所有元素都應具有CSS規則“ cursor:pointer;”。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM