2016-05-13 7 views
0

Ich verwende html2canvas. Chrome lädt das Bild herunter, aber der andere Browser lädt das Bild nicht herunter.Wie Leinwand Bild (Base64) in Javascript herunterladen

Dies ist der Code:

html2canvas($("body")[0], { 
     onrendered: function(canvas) { 
     var img = canvas.toDataURL("image/png"); 
     var link = document.createElement('a'); 
     link.download = "test.png"; 
     link.href = img; 
     link.click(); 
     } 
    }); 

Wie kann ich das Bild zu bekommen auf anderem Browser zum Download?

Antwort

0

download Attribut ist nicht weit kompatibel.

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

Allerdings funktioniert es in Firefox, Chrome, Opera und Android, wenn nicht für Sie arbeiten, es ist wahrscheinlich, weil der Benutzer nicht ein Click-Ereignis macht (Sie versuchen gemacht Veranstaltung zum Download auf), so dass Chrome einen Sicherheitsfehler hat.

Wenn der Benutzer keinen Klick in den Nirgendwo macht, werden aus Sicherheitsgründen keine Klicks ausgelöst. Offensichtlich.

+0

Was sollte ich statt Click-Ereignis hinzufügen, tun ?? –

+0

Machen Sie eine Schaltfläche, wenn der Benutzer auf diese Schaltfläche klickt, können Sie die Datei herunterladen lassen. Nicht bei gerenderten Ereignissen. –

+0

Hmm fast korrekt (zumindest für den Browser-Support-Teil). Für den Benutzer klicken Teil, jeder Browser, der das 'download' Attribut unterstützt, (* in ihrer aktuellen Version, kann sich nicht an frühe Implementierungen erinnern *) dh Chrome, FF und Edge, lösen den Download der Datei auf js' aus Methode "AnchorElement.click()". Nur FF verfügt über einen * Sicherheitsschritt *, bei dem der Anker an das Dokument angehängt werden muss, damit er funktioniert. – Kaiido

0

Es funktioniert für mich, wenn ich die link in die Seite vor dem Trigger click wie unten,

document.body.appendChild(link); 
link.click(); 
link.parentNode.removeChild(link);