HTML/JS上传图像从相机在iOS6
HTML/JS upload of images from camera on iOS6
我有这样的代码片段:
<script>
var reader = new FileReader();
reader.onload = (function(theFile) {
return function(e) {
// Render thumbnail.
var span = document.createElement('span');
span.innerHTML = ['<div id="wrap"><img id="image" class="thumb draggable" src="', e.target.result,
'" title="', escape(theFile.name), '" draggable="true" /></div>'].join('');
document.getElementById('list').insertBefore(span, null);
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
我在iOS的移动应用程序中使用它,它从相机捕获数据并在div中显示预览。一切都很好,除了我第一次在新设备上加载应用程序而未经批准访问照片(它提示你第一次尝试拍照)。
这里的问题是,当我在用户批准访问用户的照片之前调用reader.readAsDataURL(f);
时,没有触发reader.onload
。
是否有任何监听用户的批准,或者可能有一种方法来提示用户访问相机页面加载?
谢谢
我认为这里有两个问题。
首先,我假设我们正在收听<input type="file" />
标记上的某种onchange
事件,该事件调用相机/用户照片,然后调用读取文件的代码。如果没有,我们肯定应该这样做,因为这将等待适当的事件。
最后,我们将f
作为参数传递给匿名函数,该函数在某种代码开始时返回另一个匿名函数,该函数将成为我们实际的事件侦听器。问题不在于在reader.readAsDataURL(f);
调用文件,因为您首先在reader.onload
中使用f
作为参数。
看到f
处于比reader.onload
事件更高的作用域,我们应该能够执行以下操作:
reader.onload = function(e) {
// Render thumbnail.
var span = document.createElement('span');
span.innerHTML =
['<div id="wrap"><img id="image" class="thumb draggable" src="',
e.target.result, '" title="', escape(f.name), // we use f, not theFile
'" draggable="true" /></div>'].join('');
document.getElementById('list').insertBefore(span, null);
};
上面,我们消除了函数初始化,简单地引用已经在作用域中的f
。这个函数也不会执行,除非我们有权限,所以这应该澄清你最初的用例问题。
相关文章:
- 如何使相机跟随地形's在此示例中的高度:http://threejs.org/examples/#webgl_t
- 单击以将相机放置在Three js中的对象附近
- 将相机添加到Three.js中的场景的原因
- 如何在three.js中实现不同相机/场景之间的交叉渐变
- cordova.js/Camera.js无法使用相机功能
- HTML5相机缓冲和延迟(延迟镜像)
- Phonegap相机在画布上的绘制失真
- 三.js - 自 r69 以来如何链接/添加相机灯
- 钛:从Android的相机/图库图像本地保存文件
- 投影仪和带有正交相机的射线
- 三.js - 如何获取相机相对于原点的位置
- 为什么我不能在 Django Web 应用程序中使用客户端相机拍摄图像快照
- 从移动相机拍摄图像并在上传前预览
- SVG相机平移每次都保持重置为0
- 如何旋转相机,使其面向/高于球体上的点(Three.js)
- iOS6/7使用网络音频API阻止声音进入背景
- 如何在three.js中将相机自动对焦到一个点上
- 如何在Windows 8中正确初始化相机
- 在Windows8Javascript中关闭相机的正确方法是什么
- HTML/JS上传图像从相机在iOS6