Атрибут загрузки разрешен. html в chrome, но не в firefox - PullRequest
1 голос
/ 07 мая 2020

Следующий код загружает htmlTest. html в Chrome, но при запуске в Firefox загружает htmlTest. html .pdf Почему firefox добавляет .pdf? Я хочу скачать. html как указано.

<html>
  <head> </head>
  <body>
    <button onclick="download()">Download html file</button>
    <script type="text/javascript">
      function download() {
        var element = document.createElement("a");
        var inshtml = `hello world`;
        element.setAttribute(
          "href",
          "data:text/plain;charset=utf-8," + encodeURIComponent(inshtml)
        );
        element.setAttribute("download", "htmlTest.html");

        element.style.display = "none";
        document.body.appendChild(element);

        element.click();

        document.body.removeChild(element);
      }
    </script>
  </body>
</html>

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Я нашел ответ на FireFox. Firefox игнорирует расширение, но ищет тип MIME. например, здесь установлен тип пантомимы:

        element.setAttribute(
          "href",
          "data:text/plain;charset=utf-8," + encodeURIComponent(inshtml)
        );

Изменение, которое нужно сделать в моем случае для загрузки файла. html. Мне нужно изменить тип пантомимы (установленный после данных :) следующим образом:

        element.setAttribute(
          "href",
          "data:text/html;charset=utf-8," + encodeURIComponent(inshtml)
        );

Mozilla явно заявляет об этом по этой ссылке https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types

И вот ключевая цитата:

Важно: браузеры используйте тип MIME, а не расширение файла, чтобы определить, как обрабатывать URL-адрес, поэтому важно, чтобы веб-серверы отправляли правильный тип MIME в заголовке Content-Type ответа. Если это не настроено правильно, браузеры могут неверно истолковать содержимое файлов, а сайты будут работать некорректно, а загруженные файлы могут быть неправильно обработаны. хотя в данном случае это неправильно, поскольку другие браузеры не изменяют явно заданное расширение при загрузке файлов. html.

0 голосов
/ 07 мая 2020

Это связано с отсутствием обязательных тегов html. Некоторые выпуски Firefox фактически игнорируют весь документ при отсутствии тегов (выпуск Firefox Developer Edition 2020). В любом случае я попробовал приведенный ниже код, и он загружается. html во всех браузерах. Если ваш Firefox все еще загружается в формате pdf, значит, он настроен для этого. Убедитесь, что ваша firefox настроена для загрузки страницы html как. html Если вы можете выполнить настройку, возможно, вам следует переустановить новый браузер.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button onclick="download()">Download html file</button>
    <script type="text/javascript">
      function download() {
        var element = document.createElement("a");
        var inshtml = `hello world`;
        element.setAttribute(
          "href",
          "data:text/plain;charset=utf-8," + encodeURIComponent(inshtml)
        );
        element.setAttribute("download", "htmlTest.html");

        element.style.display = "none";
        document.body.appendChild(element);

        element.click();

        document.body.removeChild(element);
      }
    </script>
  </body>
</html>



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...