我正在使用React构建一个用Cordova包装的网络应用程序,成为android / iOS上的本机应用程序。我在使用专门的iOS时遇到了问题,特别是模拟了对.click()
我正在使用此库:https://github.com/odysseyscience/react-s3-uploader
这是我的代码,非常简单:
<button onClick={(e) => {
e.preventDefault()
$('#fileinput').click()
}} className='btn btn--no-bg btn--w-icon uploader'>
标识为fileinput
的元素是反应上传器的呈现版本,但在纯HTML中如下所示:
<input type="file" id="fileinput" class="hidden react-s3" accept="image/*">
我做了一堆测试,问题出现在.click()
jquery事件中。肯定会触发第一个onClick
,但在调用$('#fileinput').click()
时没有任何事情发生(在iOS中)。
这部分代码在Web浏览器和我的Android模拟器中工作,但在我的iOS模拟器中再次不。
当我进入所有三种环境(桌面,iOS,Android)的控制台,并在控制台中运行代码$('#fileinput').click()
时,点击输入并触发Android和桌面的照片选择,但是iOS上没有任何功能。
我做了大量的研究,我发现一些不起作用的解决方案是:向按钮或输入添加pointer: cursor
,将button
更改为a
标记,在隐藏的输入上将display:none
更改为visibility: hidden
,并尝试找到.click()
的所有不同版本(vanillaJS,.trigger
,.touchstart
,{{1} },.touchend
等。)
答案 0 :(得分:1)
我有同样的问题,这很有效:
$('#fileinput').trigger("click");
并且不要隐藏文件输入,而是将其从屏幕上删除,如:
#fileinput {
position:absolute;
top:-9999px;
}
我认为你不能触发iOS中隐藏元素的点击