मैं चाहता हूं कि उपयोगकर्ता मेरे एक्सटेंशन के लिए 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, पॉपअप तत्काल बंद हो जाता है फ़ाइल ब्राउज़र संवाद खुलता है।
किसी भी मदद की सराहना की जाती है।
क्या आप इसे हल करने के लिए तैयार थे? आप किस मंच पर हैं? – gkalpak
@ एक्सपेरसिस्टम नो, मुझे फ़ाइल इनपुट के लिए पॉपअप विंडो का उपयोग करने के लिए मजबूर होना पड़ा। मैं विंडोज 7 पर हूं, फिर भी पॉपअप विंडो का उपयोग करने के अलावा किसी अन्य संभावित समाधान की तलाश में हूं। – Rikonator
पहले, था पृष्ठभूमि पृष्ठभूमि के साथ आपका दृष्टिकोण काम करता था, लेकिन क्रोम के नवीनतम संस्करणों में नहीं।लेकिन आप एक्सटेंशन के ब्राउज़र-एक्शन पॉपअप का उपयोग क्यों नहीं कर सकते? ऐसा लगता है कि विंडोज़ पर काम करता है। – gkalpak