我希望能够使用JavaScript在iPhone/iPad的移动版Safari中打开select元素。

一个广泛的谷歌/堆栈溢出搜索显示,很多人希望能够在浏览器中做到这一点,但它不被支持(为什么不,我想知道?)。在select元素上调用focus()并更改其size属性以使更多option元素可见,或者构建具有



  • 元素的完全模拟选择元素。然而,我会喜欢在iPad和iPhone中使用本机浏览器选择控件。

我想知道,也许有人可能知道专有的Apple WebKit方法来做到这一点。这将是这样的:

var myselect = document.getElementsByTagName("select")[0];
myselect.open(); // this method doesn't exist

作为奖励,这也将会是很方便的知道说,选择元素是否为当前打开/主动,或没有(即不只是元素是否布尔属性的有焦点)。我知道我可以通过跟踪点击和更改事件来解决这个问题,但是一个简单的属性会很有用。

如意算盘?

UPDATE:

我还没有答案,但我发现,模拟mousedown成功打开在谷歌浏览器中选择元素,但不能的iPad或Firefox等:

function simulateMouseEvent(eventName, element) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent(eventName, true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
element.dispatchEvent(evt);
}
simulateMouseEvent("mousedown", select);
+0

你能迫使该元素上的点击/水龙头? –

2011-05-23 12:39:43

+0

你能告诉我们你想达到的效果吗?我的意思是为用户增加什么价值。 –

2011-05-23 12:40:41

+1

@Seth - 怎么样? @mplungjan - 这是一个基于SVG的数据可视化应用程序,其中不同的手势可以触发不同的结果。例如,用户可以在屏幕上拖动一个圆圈,但是如果同一个圆圈只有一个手指点击,那么我希望有一个选择框可以显示多个选项。我不想要求2次点击:一次显示/关注选择,+1显示选项。我*可以*使select元素成为用户与之交互的元素,所以它在点击时打开,如果select元素被拖动,我可以移动circle元素,但如果可能,我宁愿避免。 –

2011-05-23 14:07:50