all*_*ire 21 javascript safari ios ios7
在iOS版(目前7.0),它看起来像alert()和confirm()(又名使用元标签时,我们的Web应用程序被固定到主屏幕不工作apple-mobile-web-app-capable).
我发现用户在Twitter上有类似的问题:
https://twitter.com/thomasfuchs/status/380137801259704320
如果它真的是iOS 7中的错误,任何人都有临时修复?
Bar*_*rie 14
我们遇到类似的问题,警报打破了我们的网络应用.具体情况是从选择列表的更改触发的警报.我们整理了一个非常简单的测试页面,如下所示:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
        <select onchange="alert('broken!');">
            <option value="one">One</option>
            <option value="two">Two</option>
        </select>
    </body>
</html>
在iPad中从Safari运行该页面并更改选择列表会触发警报,然后Safari会冻结.你实际上必须关闭Safari.这通常会影响Safari - 您的Web应用程序不必固定到主屏幕.您应该可以在此测试页http://jsbin.com/AGoTejA/1上的运行iOS 7的iPad上进行测试.
我们在iPad 2(MC774B/A)和iPad 3(MD367B/A)上进行了测试,两者都发生了Safari崩溃.
解决此问题的一种愚蠢方法是使用setTimeout()来延迟警报的执行.当Safari试图显示覆盖图时,似乎只会出现问题,该覆盖图同时显示选择列表项和警报.confirm()也以同样的方式被打破.
我不知道它是设计还是错误,但我可以确认这是一个真正的问题.另一件需要注意的事情是,如果用户可以选择启用保存密码,则任何需要登录的站点都将失败,因为该提示也被阻止.(您可以使用带有用户名和密码框的简单表单来尝试此操作,而不会提交任何其他内容.但是对于所有三个问题都有解决方法.
登录 - 在站点的表单标记中设置autocomplete ="off",或检测该站点是否正在运行IOS7并处于全屏模式并应用此设置
$('form').attr('autocomplete', 'off');
警报和确认 - 您可以在JavaScript中编写自定义函数,也可以像在此处一样覆盖现有函数:http://andrewensley.com/2012/07/override-alert-with-jquery-ui-dialog/.我喜欢使用Eric Martin的SimpleModal插件,它具有内置的Confirm覆盖,底部演示在http://www.ericmmartin.com/projects/simplemodal-demos/上.
我希望其中一些有所帮助.
| 归档时间: | 
 | 
| 查看次数: | 43609 次 | 
| 最近记录: |