2012-12-17 58 views
8

मैं कुछ पन्नों में इस HTML तत्व सम्मिलित करना चाहते हैं:एंकर की डाउनलोड संपत्ति कुछ पृष्ठों (जीमेल) पर काम नहीं कर रही है?

<a download="somedata.csv" 
    id="downloadLink" 
    href="data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333" 
> 
    Click Me 
</a> 

सभी पृष्ठों में, जब मैं प्लगइन के माध्यम से या मैन्युअल तत्वों निरीक्षक में डोम बदलने के लिए, पृष्ठ के डोम को यह तत्व शामिल करने के लिए, यह बहुत अच्छा काम करता है!
लेकिन, अगर मैं जीमेल पृष्ठों में ऐसा करता हूं, तो उत्पन्न फ़ाइल को "somedata.csv" नाम नहीं दिया गया है और एक्सटेंशन खो गया है "csv"!

मैंने स्थानीय फ़ाइल में स्थानीय फाइल में अपलोड की गई फ़ाइल में और कई बाहरी वेबसाइट पृष्ठों में यह कोशिश की, यह जीमेल पृष्ठों को छोड़कर सभी में काम करता है।

यह जीमेल पृष्ठों में क्यों काम नहीं करता है? और इसे कैसे ठीक करें?

यहाँ है समारोह:

+0

इस पृष्ठ के मुताबिक extenstion डाउनलोड संपत्ति के भीतर href के अंत में नहीं जाता है: http://davidwalsh.name/download-attribute –

+0

लेकिन मेरे मामले में, href का मान डेटा नहीं है। –

+0

यह फेसबुक पेजों पर भी एक ही समस्या है, डाउनलोड फ़ाइल नाम विशेषता को अनदेखा किया जाता है – user280109

उत्तर

5

जो लोग रुचि रखते हैं के लिए, मैं यह जावास्क्रिप्ट/अजाक्स का उपयोग हल, यहाँ समाधान है

var downloadDataURI = function($, options) { 
    if(!options) 
     return; 
    $.isPlainObject(options) || (options = {data: options}); 
    if(!$.browser.webkit) 
     window.location = options.data; 
    options.filename || (options.filename = "download." + options.data.split(",")[0].split(";")[0].substring(5).split("/")[1]); 
    options.url || (options.url = "http://download-data-uri.appspot.com/"); 
    $('<form method="post" action="'+options.url+'" style="display:none"><input type="hidden" name="filename" value="'+options.filename+'"/><input type="hidden" name="data" value="'+options.data+'"/></form>').submit().remove(); 
} 

और यहाँ है कि यह कैसे कॉल करने के लिए है:

downloadDataURI($, {filename: "test.csv",data:"data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333"}); 
+1

फ़ाइल नाम को Win8 –

+1

पर ubunto या फ़ायरफ़ॉक्स पर फ़ायरफ़ॉक्स द्वारा सम्मानित नहीं किया जाता है I10 में काम नहीं करता है। '$ .browser.webkit' सत्य नहीं है, इसलिए 'window.location' सेट है, और आईई प्रदर्शित करता है' वेबपृष्ठ प्रदर्शित नहीं किया जा सकता '। –

2

JQuery के साथ क्रोम में, मैं इस दृष्टिकोण को आजमाता हूं:

var dataUri = "data:application/csv;charset=utf-8,Col1%2CCol2%2CCol3%0AVal1%2CVal2%2CVal3%0AVal11%2CVal22%2CVal33%0AVal111%2CVal222%2CVal333" 
var filename = "somedata.csv" 

$("<a download='" + filename + "' href='" + dataUri + "'></a>")[0].click(); 

मैंने एक अस्थायी लिंक बनाया और उस पर ट्रिगर क्लिक करें। लेकिन यह सुनिश्चित नहीं है कि अन्य ब्राउज़र काम करते हैं या नहीं।

+1

क्रोम में बहुत अच्छा काम करता है। क्या आपने फ़ायरफ़ॉक्स के लिए समाधान ढूंढने का प्रबंधन किया था? – Owen

+0

शरीर में संलग्न होने से फ़ायरफ़ॉक्स पर समस्या हल हो जाती है, https://stackoverflow.com/questions/27814048 देखें – Kokizzu