繁体   English   中英

Chrome扩展程序弹出窗口中的文件输入

[英]File Input in Chrome Extension popup

我希望用户能够通过我的扩展程序的browserAction弹出窗口上载文本文件作为输入,但是遇到了一些问题。

我一直在使用一个隐藏的input标签,当用户单击文件上载按钮时,我会用click()触发它。 文件浏览器对话框将打开,并且似乎一切正常,直到弹出窗口本身关闭。 而且由于包含input标签关闭的“网页”, change事件永远不会触发。

由于延长已经拥有用于填充与持久性数据弹出后台脚本,我想,我可以创建input的背景剧本触发和.click()时,在弹出的文件上传按钮,用户点击。

但是,即使在后台脚本中为input触发了click事件,文件浏览器对话框也不会打开。

我认为这是因为Chrome浏览器不允许通过程序触发文件输入,除非通过用户操作进行,但是我不确定。 这就是我尝试过的方式;

popup.js

//Button in popup which should open file broswer dialog
//when clicked
browseBtn.addEventListener('click', function() {
    chrome.runtime.sendMessage({msg: 'file_input'});
}

background.js

var fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = 'text/*';

fileInput.addEventListener('click', function(e) {
    console.log('fileInput clicked');
}, false);

fileInput.addEventListener('change', function(e) {
    console.log('fileInput changed');
    console.log(this.files);
}, false);

chrome.runtime.onMessage.addListener(function(e) {
    if(e.msg === 'file_input')
        fileInput.click();
});

我知道click事件已触发,因为记录了fileInput clicked 但是,文件浏览器对话框不会打开。

我还尝试使用chrome.extension.getBackgroundPage()直接调用fileInput.click()来修改此代码。 再次,触发了click事件,但是对话框没有打开。

我的问题是; 有没有办法允许后台脚本触发文件input以打开文件浏览器对话框? 那将是最好的解决方案,因为即使扩展以某种方式关闭,它也允许扩展名从指定的文件中提取数据。

如果没有,有没有办法避免在打开文件浏览器对话框时关闭弹出窗口? 从我发现的结果来看,使用隐藏的input标签应该是一种解决方法,并且在某些情况下确实有效,但并非适用于所有用户。

例如,我能够上载文件而不会在Windows 7的Chrome上关闭弹出窗口。但是,在Chromium,Ubuntu 14.04上,弹出窗口会在打开文件浏览器对话框时立即关闭。

任何帮助表示赞赏。

看来这可能已经修复 ,我也在等待它可用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM