【问题标题】:WkWebView Cordova Ios onClick events not firingWkWebView Cordova Ios onClick 事件未触发
【发布时间】:2021-09-28 11:55:09
【问题描述】:

我已经追了好几个小时了。我读过同样的问题here 和here

在我的 Mac 上使用 ios iphone 模拟器时,我的 Cordova 应用程序基本上对点击事件没有响应。它在iphone中也没有响应。执行cordova run browser 时在浏览器中工作正常。我需要提一下,是的,一切都在deviceready 内,所以这不是问题。唯一有效的是href。其他一切都没有反应。解决办法是什么?

html

<button id="pressOn">press me</button>

我试过了:

这个

$("#pressOn").on("touchend", openPage('login'));

这个

$("#pressOn").on("touchstart", openPage('login'));

这个

let touchEvent = 'ontouchstart' in window ? 'touchstart' : 'click';
$('#pressOn').on(touchEvent, openPage('login'));

没有任何作用...没有任何反应。

但是,当应用程序出现在模拟器上时,它会以某种方式触发(我没有做/触摸任何事情)

document.getElementById('pressOn').addEventListener('touchstart', alert('cheer up!'), false);

【问题讨论】:

    标签: ios cordova wkwebview


    【解决方案1】:

    这不是事件监听器的工作方式。实际上,您需要一个函数作为第二个参数,而不是函数调用:

    $(selector).on( eventname , functionDef )
    

    在你的情况下,你可以这样做:

    $("#pressOn").on("touchend", function () { openPage('login') });
    
    $("#pressOn").on("touchstart", function () { openPage('login') });
    
    let touchEvent = 'ontouchstart' in window ? 'touchstart' : 'click';
    $('#pressOn').on(touchEvent, function () { openPage('login') });
    

    如果您使用像 openPage('login') 这样的函数调用,它将被立即解析和执行,而不是在事件流中。出于同样的原因,您的呼叫会立即触发警报:

    document.getElementById('pressOn').addEventListener('touchstart', alert('cheer up!'), false);
    

    你需要使用函数闭包来定义事件监听器,像这样:

    document.getElementById('pressOn').addEventListener('touchstart', function() { alert('cheer up!') }, false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2013-04-30
      • 2011-02-05
      • 1970-01-01
      • 2020-11-02
      • 2019-08-18
      相关资源
      最近更新 更多