2012-10-26 20 views
7

पर फ़ाइल ड्रॉप करने की क्षमता के लिए फ़ीचर पहचान, क्या हम यह पता लगा सकते हैं कि कोई ब्राउज़र <input type="file" /> पर फ़ाइल छोड़ने का समर्थन करता है या नहीं?HTML फ़ाइल इनपुट

उदाहरण के लिए, यह क्रोम में संभव है लेकिन IE8 में नहीं है।

Modernizr.draganddrop एक संभावना है लेकिन क्या यह सही विकल्प है? मैं कोई कस्टम ड्रैग/ड्रॉप इवेंट हैंडलर नहीं जोड़ रहा हूं।

अद्यतन

जो जवाब यहाँ एक jQuery उदाहरण है कि फ़ाइल ड्रॉप बंद कर देना चाहिए है सत्यापित करने के लिए। क्रोम और फ़ायरफ़ॉक्स में सत्यापित।

$yourFileInput.on('drop', function() { 
    return false; // if Joe's explanation was right, file will not be dropped 
}); 
+0

तुम क्यों जानना चाहते हो? –

+0

मैं एक फ़ाइल को स्वीकार करने के लिए पृष्ठ के एक क्षेत्र को बढ़ा रहा हूं, जिसे तब अपलोड किया जाएगा (आवश्यकता के अनुसार iframe रणनीति का उपयोग कर)। पारदर्शी इनपुट फ़ाइल प्राप्त करता है और फिर एक फॉर्म में स्थानांतरित हो जाता है और पोस्ट किया जाता है। मैं उन ब्राउज़रों के लिए इनपुट जोड़ना नहीं चाहता जो कार्यक्षमता का समर्थन नहीं करते हैं। –

+0

व्यक्तिगत रूप से, मैं प्रत्येक ब्राउज़र के लिए इनपुट जोड़ता हूं। –

उत्तर

2

मुझे लगता है कि Detecting support for a given JavaScript event? का उत्तर आपकी मदद कर सकता है। डिव के बजाय इनपुट के खिलाफ परीक्षण करने के लिए कोड समायोजित करना, और "ड्रॉप" ईवेंट के लिए परीक्षण मेरे लिए ठीक काम करता प्रतीत होता है।

यहां पुन: निर्मित ताकि आप क्लिक करने के लिए के माध्यम से की जरूरत नहीं है (और समायोजित थोड़ा है, क्योंकि यह लगता है कि आप केवल इस एक सुविधा का पता लगाने की जरूरत है):

function isEventSupported(eventName) { 
    var el = document.createElement('input'); 
    eventName = 'on' + eventName; 
    var isSupported = (eventName in el); 
    if (!isSupported) { 
    el.setAttribute(eventName, 'return;'); 
    isSupported = typeof el[eventName] == 'function'; 
    } 
    el = null; 
    return isSupported; 
} 
if(isEventSupported('drop')){ 
    //Browser supports dropping a file onto Input 
} else { 
    //Fall back, men! 
} 
+0

यह एक अच्छा तरीका है। क्या आप आश्वस्त हैं कि ये ब्राउज़र वास्तव में घर पर बेक्ड की बजाय इनपुट पर फ़ाइलों को गिराए जाने के लिए मानक 'ड्रॉप' ईवेंट का उपयोग करते हैं? –

+0

बढ़िया, मैंने पुष्टि की है कि आप ड्रॉप ईवेंट से 'झूठी' लौटकर और यह देखते हुए कि ड्रॉप काम नहीं करता है। धन्यवाद जो। –

+0

हमेशा स्वागत है! अन्य पृष्ठ पर उत्तर को ऊपर उठाने का भी सुझाव दें, क्योंकि दृष्टिकोण @ कंगैक्स से संबंधित है और मुझे केवल उस पोस्ट के कारण ही मिला है :) – joequincy

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