web-dev-qa-db-fra.com

L'attribut de téléchargement ne fonctionne pas dans le safari

J'utilise un attribut de téléchargement dans mon lien:

   <a style="color:white" download="myimage" href="images/myimage.jpg">Download image</a>

Cela fonctionne très bien dans presque tous les navigateurs. Cela signifie que si je clique sur le lien, l'image est automatiquement téléchargée. Je l'ai testé dans Safari 10.1.2 sur mon Mac et tout fonctionne correctement. 

Mais sur mes amis mac qui travaille avec Safari 10.0.3, cela ne fonctionne pas. Il dit que l'image ne s'ouvre que dans une nouvelle fenêtre mais ne se télécharge pas. 

Pourquoi cela se produit-il et que puis-je faire pour que cela fonctionne n'importe où?

7
Jarla

Selon https://developer.Apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_1.html , il a été ajouté à Safari 10.1:

Attribut de téléchargement HTML5 L'attribut de téléchargement pour les éléments d'ancrage indique que la cible du lien est un lien de téléchargement qui télécharge un fichier fichier, au lieu d'un lien de navigation. Lorsque vous cliquez sur un lien avec le attribut download, la cible est téléchargée sous forme de fichier. Facultativement, la valeur de l'attribut de téléchargement fournit le nom suggéré du fichier fichier.

Il ne semble pas être disponible dans iOS Safari 11.1 bien que de mes propres tests, ce qui m'a un peu confus. Je m'attendrais à ce qu'ils soient égaux en termes de prise en charge des normes, en fonction de leur numérotation de version similaire.

10
IGx89
try this code : 

var element = document.createElement('a');
            var clearUrl = base64.replace(/^data:image\/\w+;base64,/, '');

            // element.setAttribute('href', 'data:attachment/image' + base64);
            element.setAttribute('href', 'data:application/octet-stream;base64,' + encodeURIComponent(clearUrl));
            element.setAttribute('download', 'filename.jpg');
            document.body.appendChild(element);
            element.click();
            document.body.removeChild(element)

C'est un travail pour moi dans la version 10.0.3 de safari

2
mayur kukadiya