簡體   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