iOS独立HTML5应用程序'click'事件未触发动态注入的输入

时间:2013-11-26 23:12:25

标签: jquery ios html5 mobile-safari iphone-standalone-web-app

我遇到的问题似乎只出现在HTML5应用的独立模式下,我将其保存到iOS设备的主页屏幕。

通过独立模式,我的意思是带有以下metatag的HTML网络应用:

<meta name="apple-mobile-web-app-capable" content="yes">

有问题的javascript(用coffeescript编写)如下:

$( ->
  $(document).on('click', 'input', (e) ->
    alert('click')
  )

  $(document).on('focusout', 'input', (e) ->
    alert('blur')
  )
)

这些是委托事件处理程序来处理动态注入的<input>元素。 alert()消息在Mobile Safari中显示正常。但是,当以独立模式查看Web应用程序时(即,从主页屏幕启动),事件不会触发。

我正在使用jQuery v1.10.2,如果这有用的话。

1 个答案:

答案 0 :(得分:0)

我遇到了一个类似的问题,即动态创建的输入没有光标或允许您在第一次单击/触摸输入时键入它们。键盘出现,页面滚动使得看起来输入被选中,但事实上,它不是。输入中的第二次触摸/点击将光标置于输入中,并允许输入文本。

我的解决方法是将touchend事件附加到该特定输入,然后使用jQuery的focus()以编程方式再次聚焦该输入。我不得不使用touchend因为click事件不会以独立模式触发。

下面是一段代码片段,您不得不原谅语法,我使用的是Backbone。这是我输入的touchend上调用的方法。

clickedInput: function (e) {

    if (window.navigator.standalone) {

        $(e.currentTarget).focus();

    }

}