【发布时间】:2012-03-14 01:40:21
【问题描述】:
这个想法是:你有一个隐藏的文件字段和一个图像。您使用图像来显示选择文件对话框。然后我在画布中显示图像。
<input id="ytfile-select" type="hidden" value="" name="Foto[image]" />
<input style="display:none" id="file-select" accept="image/*"
name="Foto[image]" type="file" />
<img id="upload-image" src="/images/design/upload-image.png"
alt="upload-image-button" />
<canvas id="canvas">
Sorry, your browser doesn't support the <canvas> element.
</canvas>
$('#upload-image').click(function(){
$('#file-select').click();
});
$('#file-select').bind('change',function(){
var fileList = this.files;
var img = document.createElement("img");
img.classList.add("obj");
img.src = window.URL.createObjectURL(fileList[0]);
var ctx = document.getElementById('canvas').getContext("2d");
ctx.drawImage(img,0,0);
});
在 Firefox 10 上,ctx.drawImage(img,0,0); 仅在我在该行上有 Firebug 调试器和断点时才有效。没有断点,它就不起作用。我在另一个干净的配置文件上检查了它。
在 Chrome 上,$('#file-select').click(); 不会打开文件对话框。
编辑:这个问题已经回答了。但是,我不知道 Firefox 的问题是什么。有什么想法吗?
我使用这些网站创建了这段代码:
- https://developer.mozilla.org/en/using_files_from_web_applications
- http://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/
编辑 2:
我通过这样做解决了 Firefox 的问题:
在var fileList = this.files; 后面,我写了:
reader = new FileReader();
reader.onload = function (event) {
$('#display').append('<img src ="' + event.target.result + '">');
};
reader.readAsDataURL(fileList[0]);
【问题讨论】:
-
显而易见,但您的脚本是否在
<script>标签内? -
出于安全原因,无法通过 进行软点击
标签: jquery html firefox google-chrome canvas