web-dev-qa-db-fra.com

Lien URI de données <a href = "data: ne fonctionne pas dans Microsoft Edge

Ce code simple fonctionne parfaitement partout sauf Microsoft Edge:

<a href="data:text/plain;charset=utf-8,Test">link</a>

[JSFiddle]

Dans Microsoft Edge, j'obtiens l'erreur "C'est étrange ... Microsoft ne trouve pas cette page":

enter image description here

Les exemples de documentation Mozilla ne fonctionnent pas non plus avec le même résultat.

Voici la sortie de la console Edge:

Cette erreur se produit lors de l'ouverture d'une nouvelle fenêtre Edge, sur de nouveaux onglets, elle entre data:text/plain;charset=utf-8,Test comme requête de recherche dans le moteur de recherche par défaut.

Il semble que Microsoft Edge n'ait pas de définition pour data:

Quelqu'un connaît-il une solution à cela?


Mise à jour: malheureusement, il semble qu'il n'y ait aucun moyen d'utiliser l'URI de données dans les liens dans IE/Edge. J'ai créé une question connexe sur la détection de la prise en charge de l'URI de données dans les liens: Détecter l'URI de données dans la prise en charge des liens avec Modernizr

24
Limon Monte

Ni IE ni Microsoft Edge ne prennent en charge la navigation vers les URI de données. MSDN prétend que c'est pour des raisons de sécurité .

La seule solution est de lier, en utilisant un schéma qui est pris en charge tel que file: // ou http: //, à une ressource qui contient le contenu .

Il est intéressant de noter que les anciennes versions de IE (je parle de plus de 6 ans) prenaient en charge un précurseur des URI de données dans le schéma about: URI, bien que seul HTML soit pris en charge de cette façon. Ces URI ne sont plus travailler aujourd'hui et simplement rediriger vers "Navigation annulée" (auparavant "Action annulée").

12
BoltClock

Puisque IE et Edge prennent en charge <img> tags avec un URI de données comme source, vous pouvez truquer un lien vers une image en utilisant javascript pour écrire dans le document:

<a href="javascript:document.write('<img src=data:image/png;base64,iVBORw0KGgoAA
AANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0l
EQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6
P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC />')">link</a>
2
Matthew Hodges

Vous pouvez essayer d'utiliser navigator.msSaveBlob afin de télécharger l'URI de données dans IE/Edge:

var a = document.getElementsByTagName('a')[0];
a.addEventListener('click', function (e) {
    if (navigator.msSaveBlob) {
        var bytes = atob(a.href.split(',')[1]), array = [];
        for(var i = 0; i < bytes.length; i++) array.Push(bytes.charCodeAt(i));
        navigator.msSaveBlob(new Blob([new Uint8Array(array)], {mime: "text/plain"}), "file.txt");
        e.preventDefault();
    }
});
2
niutech