我想让用户从chrome扩展程序弹出窗口中选择并上传文件。但是,只要文件选择器对话框打开,弹出窗口就会失去焦点并立即关闭。从这个answer,解决方法似乎是我可以将对话框打开逻辑移动到后台页面,这不受失去焦点的影响。
我已经尝试了答案,但文件选择器根本没有出现。实际发生fileChooser.click()
事件确实很奇怪(我能够通过为fileChooser
创建一个点击监听器来验证它)。以下是仅关注问题的简化版本。
popup.html
<button id="uploadCSV">Upload CSV</button>
popup.js
$('#uploadCSV').click(function() {
chrome.extension.sendMessage({ action: 'browseAndUpload' });
});
background.js
var fileChooser = document.createElement('input');
fileChooser.type = 'file';
chrome.extension.onMessage.addListener(function (msg) {
if (msg.action === 'browseAndUpload') {
fileChooser.click();
}
});