3

请仅在运行 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/

4

2 回答 2

2

解决方法在这里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;
}
于 2013-10-01T16:46:32.737 回答
1

显然这只是 iPad 上的 iOS7 错误。

iPad 上的 HTML 选择看起来像是选择时的弹出窗口(iOS 开发人员使用popover概念)。

我确信重点在于两个模态控件的冲突——选择的弹出窗口和确认/警报。IE 确认/警报出现在选择的弹出窗口仍然可见的时候,这会锁定确认/警报。

正是在您的onchange事件中发生了这种情况。

setTimeout在这种情况下会有所帮助:

<select id="iCard" onchange="setTimeout(function(){ alert('It worked.'); })">
于 2013-11-22T10:27:39.327 回答