我没有希望,但我会问,以防万一.
我希望能够使用JavaScript在iPhone / iPad的移动Safari中打开一个select元素.
广泛的Google / Stack Overflow搜索显示,很多人都希望能够在浏览器中实现这一点,但不支持(为什么不,我想知道?)已经提出了各种各样的黑客,从select元素调用focus(),并改变其size属性以使更多的选项元素可见,或使用÷构造一个完全模拟选择元素.和< ul>元素.但是,我想使用iPad和iPhone中的本地浏览器选择控件.
我想知道,也许有人可能会知道一个专有的Apple WebKit方法来做到这一点.它会是这样的:
var myselect = document.getElementsByTagName("select")[0]; myselect.open(); // this method doesn't exist
作为一个奖励,知道一个布尔属性说明select元素当前是否打开/是否有效(也就是说,不仅该元素是否具有焦点)也是一件好事.我知道我可以通过跟踪点击和更改事件来解决这个问题,但一个简单的属性将是有用的.
妄想?
更新:
我还没有答案,但是我发现模拟mousedown成功地在Google Chrome中打开了一个select元素,而不是iPad或Firefox等等.
function simulateMouseEvent(eventName,element) { var evt = document.createEvent("MouseEvents"); evt.initMouseEvent(eventName,true,window,false,null); element.dispatchEvent(evt); } simulateMouseEvent("mousedown",select);
更新:
我在这里选择了一个相关但不同的(和类似的未回答的)问题:Is there a DOM event that fires when an HTML select element is closed?
解决方法
使用JS触发HTML控件是一个非常灰色的区域,部分是由于安全原因,部分原因是缺乏支持.即使使用像jQuery这样的框架,你也不能简单地点击()一个链接,就像按钮上的click()一样,你需要在浏览器级触发一个本地点击事件(我相信最新版本的Selenium这个,但是这是一个测试框架,所以不适合这个问题).恭喜能够在Chrome中实现部分结果!但是,您将找不到使用实际选择输入的通用解决方案.
我建议使用不同类型的控件 – 如果要按一个按钮激活某个功能的垂直堆叠按钮,或者如果您想要一个多选格式.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。