6

मैं चाहता हूं कि उपयोगकर्ता मेरे एक्सटेंशन के लिए browserAction पॉपअप के माध्यम से टेक्स्ट फ़ाइलों को इनपुट के रूप में अपलोड करने में सक्षम हो, लेकिन मैंने कुछ समस्याएं निभाई हैं।क्रोम एक्सटेंशन पॉपअप में फ़ाइल इनपुट

मैं एक छिपी हुई input टैग का उपयोग कर रहा हूं, जिसे मैं click() के साथ ट्रिगर करता हूं जब उपयोगकर्ता फ़ाइल अपलोड बटन पर क्लिक करता है। फ़ाइल ब्राउज़र संवाद खुलता है और पॉपअप स्वयं बंद होने तक सभी अच्छी तरह से काम करते हैं। और 'वेबपृष्ठ' के कारण input टैग बंद होने के कारण, change ईवेंट कभी भी आग नहीं लगाता है।

के बाद से विस्तार पहले से ही लगातार डेटा के साथ पॉपअप को आबाद करने के लिए एक पृष्ठभूमि स्क्रिप्ट है, मैं लगा कि मैं पृष्ठभूमि स्क्रिप्ट में input बना सकते हैं और को चालू कर सकते कि .click() साथ उपयोगकर्ता पॉपअप में फाइल अपलोड बटन पर क्लिक करता है जब ।

लेकिन, हालांकि क्लिक ईवेंट पृष्ठभूमि स्क्रिप्ट में input के लिए आग लगती है, फ़ाइल ब्राउज़र संवाद नहीं खुलता है।

मुझे लगता है कि इसका कारण यह है कि क्रोम फ़ाइल इनपुट को प्रोग्रामेटिक रूप से ट्रिगर करने की अनुमति नहीं देता है जब तक कि यह उपयोगकर्ता कार्रवाई के माध्यम से न हो, लेकिन मुझे यकीन नहीं है। इस तरह मैंने कोशिश की;

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 टैग का उपयोग करना एक काम था, और यह कुछ मामलों के लिए काम करता है, लेकिन सभी उपयोगकर्ताओं के लिए नहीं।

उदाहरण के लिए, मैं क्रोम, विंडोज 7 पर पॉपअप बंद होने के बिना फ़ाइलों को अपलोड करने में सक्षम था। लेकिन, क्रोमियम पर, उबंटू 14.04, पॉपअप तत्काल बंद हो जाता है फ़ाइल ब्राउज़र संवाद खुलता है।

किसी भी मदद की सराहना की जाती है।

+0

क्या आप इसे हल करने के लिए तैयार थे? आप किस मंच पर हैं? – gkalpak

+0

@ एक्सपेरसिस्टम नो, मुझे फ़ाइल इनपुट के लिए पॉपअप विंडो का उपयोग करने के लिए मजबूर होना पड़ा। मैं विंडोज 7 पर हूं, फिर भी पॉपअप विंडो का उपयोग करने के अलावा किसी अन्य संभावित समाधान की तलाश में हूं। – Rikonator

+0

पहले, था पृष्ठभूमि पृष्ठभूमि के साथ आपका दृष्टिकोण काम करता था, लेकिन क्रोम के नवीनतम संस्करणों में नहीं।लेकिन आप एक्सटेंशन के ब्राउज़र-एक्शन पॉपअप का उपयोग क्यों नहीं कर सकते? ऐसा लगता है कि विंडोज़ पर काम करता है। – gkalpak

उत्तर

0

ऐसा लगता है कि यह शायद fixed हो सकता है, मैं भी इसके लिए उपलब्ध होने का इंतजार कर रहा हूं!

+1

बग केवल ओएस एक्स की चिंता करता है, और मूल प्रश्न उबंटू के बारे में है। यह अभी भी एक खुली समस्या हो सकती है। – Xan

संबंधित मुद्दे