Angularjs ng选择按钮打开文件系统对话框两次
所以我正在追踪一个我无法完全控制的bug。问题是,如果您有一个带有ng select的按钮,将浏览器调离焦点(单击桌面),然后双击该按钮,它会打开浏览器文件系统对话框两次,并丢弃第一个输入。问题是如何强制它只打开文件对话框一次 有关守则:Angularjs ng选择按钮打开文件系统对话框两次,angularjs,ng-file-upload,Angularjs,Ng File Upload,所以我正在追踪一个我无法完全控制的bug。问题是,如果您有一个带有ng select的按钮,将浏览器调离焦点(单击桌面),然后双击该按钮,它会打开浏览器文件系统对话框两次,并丢弃第一个输入。问题是如何强制它只打开文件对话框一次 有关守则: <!-- Table Buttons --> <div class="container dashboard__table__action-items-container" ng-if="user.Welcomed"> <
<!-- Table Buttons -->
<div class="container dashboard__table__action-items-container" ng-if="user.Welcomed">
<button class="btn btn-primary" ngf-select="onFileSelect($files)" ngf-multiple="true" style="margin-right: 15px;">
<i class="fa fa-cloud-upload fa-3" style="margin-right: 4px"></i> Upload Meeting
</button>
...
</div>
上传会议
...
编辑:
我在几个浏览器上测试了这种行为,但没有发生(firefox、safari、opera)。这只发生在chrome上。ng文件上传的版本是12.2.9,chrome版本是52.0.2743.116。所以我最终通过黑客破解解决了这个问题,但我仍然认为这是chrome和/或ng文件选择的一个缺陷。对于后代,如果将按钮包装在具有ngf select的div中,则可以手动取消事件传播的隔振
相关代码:
<!-- Table Buttons -->
<div class="container dashboard__table__action-items-container" ng-if="user.Welcomed">
<button class="btn btn-primary" ngf-select="onFileSelect($files)" ngf-multiple="true" style="margin-right: 15px;">
<i class="fa fa-cloud-upload fa-3" style="margin-right: 4px"></i> Upload Meeting
</button>
...
</div>
html:
你能创建一个JSFIDLE吗?它发生在演示页面上吗?是的,它发生在演示页面上。我将chome选项卡打开到演示页面。点击桌面上的焦点,然后双击“选择文件”按钮,它会打开两次。看起来像是Chrome中的一个bug。单击事件在该元素上触发两次。无论如何,上传按钮的正常使用是单击一次,因此很少期望用户双击上传按钮。
var meetingCreationClicked;
$scope.debounceMeetingCreation = function ($event) {
if (meetingCreationClicked) {
$event.preventDefault();
$event.stopPropagation();
return false;
}
meetingCreationClicked = true;
$timeout(function(){
meetingCreationClicked = false;
}, 1000);
};