在iOS 9.3之后,此代码停止在Safari中工作

时间:2016-05-05 05:38:34

标签: jquery ios css html5 safari

我在5年前开发了一个基于网络的移动数据输入应用程序,在iOS 的 9.3或9.3.1版本之后停止在Safari中正常运行。它可能已经开始提前,但我知道它仍然适用于 iOS 9.2.1 。它可以在Chrome中正常运行。

以下jsfiddle表示应用程序的片段,它不起作用:点击任何对象都无法打开选项。

https://jsfiddle.net/panmqj8a/2/

要在iDevice上运行它而不看HTML / CSS / JS框架: https://jsfiddle.net/panmqj8a/2/embedded/result/

那里有相当多的代码,而且我不希望这个问题看起来太长,但显然我必须在这个问题中粘贴一些代码才能被认为是有效的。

以下是构建其中一个选择对象的代码示例:

var activity_data = [ 
    { "id" : "AD1",
      "name" : "Action 1"
    },
    { "id" : "AD2",
      "name" : "Action 2"
    },
    { "id" : "AD3",
      "name" : "Action 3"
    }
];
$.each(activity_data, function(ind,obj) {
    $('.sel_act').append(
        $('<option></option>').val(obj.id).html(obj.name)
    );
});

在完整版的应用程序中,同样的事情发生了(不能点击任何元素)加上屏幕上的其他按钮也会变得没有响应。

对于我的生活,我无法弄清楚为什么应用程序和这个jsFiddle可以在Safari iOS 9.2.1中运行,但不适用于Safari iOS 9.3.1。

编辑 - 现在这个小提琴似乎对我来说是间歇性的。这很烦人。

2 个答案:

答案 0 :(得分:0)

iOS和Safari中的下拉菜单也遇到了同样的问题。最后,我通过在这些特定类中添加cursor:pointer来解决问题。你也可以尝试这个,它可能会工作。
在您的情况下,课程可以.sel_hcw.mom_select尝试一次。

答案 1 :(得分:0)

FWIW - 事实证明window.confirm()是问题所在。没有真正记录在任何地方,但是一旦我删除了所有的window.confirm()并用flash消息替换它们,我并不真正需要用户输入(从而改善交互),或者是一个承诺我做了什么的div ,问题就消失了。