IE nie "tworzy" pliku z danych

0

Hej,

nie wiedziałem jak nazwać temat, ale chodzi mi o to że mam taki kod JS:

 //Generate a file name
	        var fileName = "";
	        fileName += ReportTitle.replace(/ /g, "_");	      
	        var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);     
	        var link = document.createElement("a");
	        link.href = uri;	      
	        link.style = "visibility:hidden";
	        link.download = fileName + ".csv";	   
	        document.body.appendChild(link);
	        link.click();
	        document.body.removeChild(link);

header funkcji:

 function JSONToCSVConvertor(JSONData) 

Ona zostaje wywołana na "success" http.get. (po tym jak pobiore dane z serwera).

Na Chrome i FF działa pięknie: zapisuje plik. Natomiast pod IE dostaje błąd "The webpage cannot be displayed", a URL zmienia się na taki:

data:text/csv;charset=utf-8,Test%20file%20name%0D%0A%0AName%2CTitle%0D%0A%22test1%22%2C%22Test1%22%2C%0D%0A%22test2%22%2C%22Test2%22%2C%0D%0A

ten test1 i test2 to sa testowe dane.
W czym tkwi problem?

0

http://caniuse.com/#feat=datauri

przez data-url w IE można tworzyć tylko obrazki i pliki css. Od wersji IE9 również skrypty .js, ale nie pliki .csv
musisz wygenerować plik od strony serwera - możesz to zrobić tylko dla IE w komentarzu warunkowym

dla IE możesz jeszcze użyć czegoś takiego jak Downloadify
nie wymaga udziału serwera, ale z kolei korzysta z flashplayera

0

no ale uzywam 11 a nie 8... ewdlug tej tabelki tam chyba jest to wlasnie wspierane przez 11

to chyba nie umiesz czytać tabelek
wszystkie wersje IE są oznaczone jako Partial support i jest tak jak napisałem wyżej - masz to w podpisie i jednocześnie masz już sprawdzone w praktyce bo skoro nie działa to znaczy że nie działa

0
ne0 napisał(a)

Okay to czy jest jakies inne podejscie do tematu sciagniecia pliku?

A czytałeś te odpowiedzi? Masz dwie opcje:
1.

gsdfg napisał(a):

musisz wygenerować plik od strony serwera - możesz to zrobić tylko dla IE w komentarzu warunkowym

gsdfg napisał(a):

możesz jeszcze użyć czegoś takiego jak Downloadify
nie wymaga udziału serwera, ale z kolei korzysta z flashplayera

0

Możesz spróbować jeszcze z Blob, jakiś czas temu napisałem na to taką funkcyjkę (na ie10+ powinno banglać, na ie9 może być problem z polskimi znakami - nie mogłem razem z separatorem przekazać utf8BOM):

exportCSV = function (data, name) {
	var csvContent = '';
	var dataString = '';
	data.forEach(function(infoArray, index){
		dataString = infoArray.join("$$");
		dataString = dataString.replace(/;/g, ' ');
		dataString = dataString.replace(/\$\$/g, ';');
		csvContent += dataString + "\r\n";
	});

	var buffer = '\uFEFF' + csvContent;
	var link = document.createElement("a");

	if(link.download !== undefined) { // feature detection
		var blob = new Blob([buffer], {
			"type": "text/csv;charset=utf8;"			
		});
		link.setAttribute("href", window.URL.createObjectURL(blob));
		link.setAttribute("download", name + ".csv");
		link.click();
	}
	else if(navigator.msSaveBlob) { // IE 10+
		var blob = new Blob([buffer], {
			"type": "text/csv;charset=utf8;"			
		});
		navigator.msSaveBlob(blob, name + ".csv", false);
	}
	else { // IE 9
		var IEwindow = window.open();
		IEwindow.document.write('sep=;\r\n' + csvContent);
		IEwindow.document.close();
		IEwindow.document.execCommand('SaveAs', true, name + ".csv");
		IEwindow.close();
	}
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1