【发布时间】:2020-06-24 09:46:09
【问题描述】:
我采用了一个在 IE 上运行良好的代码并在 Chrome 上进行测试,我发现浏览器不会等到用户选择了他的文件才继续执行代码。
HTML:
<input type="file" accept=".jpg" id="flNewDoc" name="flNewDoc"
style="display:none" />
<input ng-model="vm.currentPiece.OriginalName" type="text" id="txtNewFile"
readonly />
<button type="button" ng-click="vm.openFileDialog()">
<i class="fa fa-folder-open-o"></i>
</button>
AngularJS 控制器:
vm.openFileDialog = function () {
var element = angular.element('#flNewDoc');
element.trigger('click');
console.log("click triggered");
vm.newFile = element[0].files[0];
vm.newFileName = element[0].value;
vm.uploadFile();
console.log("file upload ended");
};
vm.uploadFile = function () {
if (vm.newFile) {
vm.currentPiece = {
isNew: true,
isToDelete: false,
isLoading: true,
};
dataSrv.uploadReunionDocument(vm.newFile).then(function (resp) {
Object.assign(vm.currentPiece, resp.data)
vm.currentPiece.isLoading = false;
vm.newFile = undefined;
vm.newFileName = '';
}, function (error) {
vm.currentPiece.isLoading = false;
console.log(error);
});
}
};
使用 IE,我的代码块在 element.trigger('click') 行暂停,因此用户可以选择他的文件并直接开始下载(客户端请求)。在 chrome 中,我们看到选择窗口打开,但代码继续运行而没有暂停
如何调整我的代码,使其在两种浏览器上都能按预期工作?
【问题讨论】:
-
@georgeawg 完美!它按预期工作!谢谢
标签: javascript angularjs file google-chrome input