使用Camera上传照片后,手机浏览器会刷新页面
Mobile browser refreshes page after uploading a photo using Camera
我的网站上有一个相当常见的文件输入字段,用于上传图片:
<input name="photos" type="file" accept="image/*"/>
在dekstop上,它正常工作。在手机上,如果我从图库中选择一张已有的照片,它会正常工作,但如果我选择用相机拍照,它会切换到相机,我拍了照片,当我在相机应用程序中确认后,它会回到浏览器,但它会刷新页面,照片不会消失。输入将为空
添加捕捉部分地解决了这个问题。
<input name="photos" type="file" capture="environment" accept="image/*"/>
现在唯一的问题是用户不能从以前存在的照片中进行选择。
6年后再回到这个问题
这似乎与Android内存管理有关:
- 浏览器启动摄像头应用
- 相机应用成为前台,浏览器成为后台进程
- Android,在操作系统级别,释放浏览器内存
- 关闭相机后,浏览器再次进入前台,触发页面刷新。
From Android Memory Management:
当用户在应用程序之间切换时,Android将非前台应用程序(即对用户不可见或运行音乐播放等前台服务的应用程序)保存在缓存中。例如,当用户第一次启动应用程序时,会为它创建一个进程;但是当用户离开应用程序时,这个过程不会停止。系统保持进程缓存。如果用户稍后返回应用程序,系统会重用该过程,从而使应用程序切换更快。
如果你的应用程序有一个缓存进程,并且它保留了当前不需要的资源,那么你的应用程序-即使用户不使用它-也会影响系统的整体性能。当系统的资源(如内存)不足时,它会杀死缓存中的进程。系统还会考虑占用最多内存的进程,并可以终止它们以释放RAM。
注意:你的应用程序在缓存中消耗的内存越少,它不被杀死的机会就越好,并且能够快速恢复。但是,根据即时系统需求,缓存的进程有可能随时终止,无论它们的资源利用率如何。
capture
工作的原因是它可能将浏览器进程保持在前台?
所以我个人会有两个按钮,一个用于选择现有文件,另一个用于使用相机:
<p>
<label for="cameraFile">Take a picture:</label>
<!-- Set "capture" to "user" to start frontal camera. -->
<input name="cameraFile" type="file" capture="environment" accept="image/*"/>
</p>
<p>
<label for="storageFile">Choose existing file:</label>
<input name="storageFile" type="file" accept="image/*"/>
</p>
添加不带值的属性捕获!
<input name="photos" type="file" capture accept="image/*"/>
相关文章:
- Jquery Draggable-在浏览器刷新时保持位置
- 我创建了一个Javascript待办事项列表,但想知道如何在浏览器刷新后保留这些帖子
- 在浏览器刷新时保存XHR渲染状态
- 如何进行允许浏览器刷新的匿名Firebase登录
- 如何单独检测浏览器刷新
- 在浏览器刷新上重复数据-Nodejs
- AngularJs:UI路由器浏览器刷新,移动到第一个子状态
- 从数组空值到浏览器刷新的 Javascript 变量
- 锚链接是指在浏览器刷新、后退和前进时不起作用的页面部分
- 如何在浏览器刷新时记住您的 iframe 指向哪个 HRREF
- AngularJS:cookie 在浏览器刷新时失败
- 当浏览器刷新本地存储刷新时
- 如何防止我的计时器在浏览器刷新时重置
- 浏览器刷新时的随机全屏背景图像
- jQuery在浏览器刷新时丢失XML数据
- 通过javascript/jquery限制浏览器刷新,f5,像银行网站一样返回浏览器
- 文档's总高度函数's的返回值在浏览器刷新时发生更改(F5)
- 如何在javascript或jquery中跟踪浏览器刷新/返回/选项卡关闭和浏览器关闭事件
- onblur事件不'如果用户在文本字段中输入值并直接按下浏览器刷新按钮,则无效
- 浏览器刷新时,JQuery多选复选框下拉列表未被取消选中