Cordova reader.onloadend 未被解雇
Cordova reader.onloadend is not fired
我正在使用 cordova 制作跨平台应用程序。
我想从照片库中获取图片并在屏幕上预览并上传到服务器。
到目前为止,我可以做到图像显示在屏幕上。
问题是 reader.onloadend 没有被触发,什么也没有发生。
$scope.getImage = function() {
var options = {
quality: 100,
sourceType: 0 // 0:Photo Library, 1=Camera, 2=Saved Album
};
var onSuccess = function(imageURI) {
var pic = document.getElementById('addImage');
pic.style.display = 'block';
pic.src = imageURI;
var reader = new FileReader();
reader.onloadend = function(evt) {
alert("loaded");
};
reader.onerror = function(error) {
alert("error");
};
reader.readAsArrayBuffer(imageURI);
};
var onFail = function(message) {
alert("error");
};
navigator.camera.getPicture(onSuccess, onFail, options);
};
我已经为这个问题苦苦挣扎了 2 天,找到了完全相同的线程 phonegap filereader onloadend doesn't work,但仍无法解决。
有人有什么建议吗?
感谢您的帮助。
我确定这是 Angular 2 中 zone.js 的一个问题。
解决方法是将 FileReader 对象包装到它自己的区域中。
const WrappedFileReader = window.FileReader
window.FileReader = function OriginalFileReader(...args) {
WrappedFileReader.apply(this, args)
const originalInstance = this[Zone.__symbol__('originalInstance')] // eslint-disable-line
return originalInstance || this
}
我正在使用 cordova 制作跨平台应用程序。
我想从照片库中获取图片并在屏幕上预览并上传到服务器。 到目前为止,我可以做到图像显示在屏幕上。
问题是 reader.onloadend 没有被触发,什么也没有发生。
$scope.getImage = function() {
var options = {
quality: 100,
sourceType: 0 // 0:Photo Library, 1=Camera, 2=Saved Album
};
var onSuccess = function(imageURI) {
var pic = document.getElementById('addImage');
pic.style.display = 'block';
pic.src = imageURI;
var reader = new FileReader();
reader.onloadend = function(evt) {
alert("loaded");
};
reader.onerror = function(error) {
alert("error");
};
reader.readAsArrayBuffer(imageURI);
};
var onFail = function(message) {
alert("error");
};
navigator.camera.getPicture(onSuccess, onFail, options);
};
我已经为这个问题苦苦挣扎了 2 天,找到了完全相同的线程 phonegap filereader onloadend doesn't work,但仍无法解决。
有人有什么建议吗? 感谢您的帮助。
我确定这是 Angular 2 中 zone.js 的一个问题。 解决方法是将 FileReader 对象包装到它自己的区域中。
const WrappedFileReader = window.FileReader
window.FileReader = function OriginalFileReader(...args) {
WrappedFileReader.apply(this, args)
const originalInstance = this[Zone.__symbol__('originalInstance')] // eslint-disable-line
return originalInstance || this
}