iOS 7 onchange 事件在 iPad 3+Mini 中被破坏 // 需要解决
Posted
技术标签:
【中文标题】iOS 7 onchange 事件在 iPad 3+Mini 中被破坏 // 需要解决【英文标题】:iOS 7 onchange event is broken in iPad 3+Mini // Need work around 【发布时间】:2013-09-23 19:32:10 【问题描述】:请仅在运行 ios 7 的 iPad 上进行测试
ios 7 似乎不支持 iPad 上的 onchange 事件的 alert() 和 confirm()。奇怪的是,它适用于运行 ios 7.0 的 iPhone 4s 和桌面浏览器,但不适用于运行 ios 7.0 的 ipad 3 或 ipad mini。它会触发对话框,当单击它会使按钮变暗(就像单击它一样),然后浏览器冻结。在 iOS 7 iPad 和 iPad mini 上运行的 Safari 和 chrome 中都会发生。
任何指针将不胜感激。已经尝试过 onblur 和 onkeypress 没有成功:-/
Options
<select id="iCard" onchange="alert('It worked.')">
<option value="0" selected="selected">(none)</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
问题可以在这里看到(确保在运行 iOS 7 的 iPad 上测试它):http://jsfiddle.net/sethsanders/MvSxm/
【问题讨论】:
一些关于 iOS7 中的重大更改的 cmets - 还指出警报、确认和提示在全屏 Web 应用程序中不起作用:mobilexweb.com/blog/safari-ios7-html5-problems-apis-review 希望您不必等待更新 感谢 Adam,我在研究这个问题时看到了那篇文章。但是,我们不会将其作为主屏幕 Web 应用程序运行。它只是像上面的 jsFiddle 一样通过 safari(或 Chrome)运行。 【参考方案1】:解决方法在这里http://jsfiddle.net/sethsanders/ZzkBd/
IE7 需要一个 setTimeout 来处理卡住的事件处理程序
function SetCard(sel)
setTimeout(function() alert('SetCard called successfully.');,10);
document.getElementById("msg").innerHTML=sel.value + ":" + sel.options[sel.selectedIndex].text;
【讨论】:
【参考方案2】:显然这只是 iPad 上的 iOS7 错误。
iPad 上的 HTML 选择看起来像是选择时的弹出窗口(iOS 开发人员使用 popover 概念)。
我确定重点在于两个模式控件的冲突——选择的弹出窗口和确认/警报。 IE。确认/警报出现在选择的弹出窗口仍然可见的时候,这会锁定确认/警报。
在您的 onchange 事件中确实发生了这种情况。
setTimeout 在这种情况下会有所帮助:
<select id="iCard" onchange="setTimeout(function() alert('It worked.'); )">
【讨论】:
以上是关于iOS 7 onchange 事件在 iPad 3+Mini 中被破坏 // 需要解决的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7.0.3 - 在 iPad 3 上表现糟糕,但在模拟器中表现出色
如何在 IOS 6.0(Iphone) 中通过 jquery 为混合应用程序关闭选择器的 onchange 事件下拉列表
为啥在 iOS Safari Mobile (iPhone / iPad) 中没有触发模糊事件?
react input 输入中文拼音和onChange事件的交互
antd pagination onchange 事件不触发,pagination onchange分页请求内容不正确。