[英]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.