Ошибка при загрузке файла JSON

Я пытаюсь загрузить данные JSON в файл JSON, используя указанный ниже код, но этот код просто дает мне пустой Internet Explorer. Мне нужен код для загрузки файла JSON без возникновения каких-либо событий в пользовательском интерфейсе.

 var dataUri = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(JSONData));
    var downloadAnchorNode = document.createElement('a');
    downloadAnchorNode.setAttribute("href", dataUri);
    downloadAnchorNode.setAttribute("download", "CarData.json");
    downloadAnchorNode.click();
just gives me a blank internet explorer Если вы занимаетесь веб-разработкой, постарайтесь не использовать устаревший устаревший браузер.
CertainPerformance 16.04.2018 23:27

@CertainPerformance, Вы имеете в виду, что мне не следует использовать Internet Explorer 11?

jay 16.04.2018 23:29

Нет, это 2018, а не 2013

CertainPerformance 16.04.2018 23:29

Не уверен, что вы имеете в виду под «без возникновения какого-либо события». Большинство браузеров (даже современные) покажут диалоговое окно с вопросом, где сохранить файл ...

Heretic Monkey 16.04.2018 23:35

IE11 и ниже не поддерживает его. developer.mozilla.org/en-US/docs/Web/HTML/Element/…

epascarello 16.04.2018 23:35

@CertainPerformance, когда я устанавливаю Microsoft Edge в качестве браузера по умолчанию и устанавливаю точку останова в том же коде, точка останова не срабатывает, но с попаданием точки останова в Internet Explorer 11. В Google Chrome моя страница даже не отображается. Я использую Visual Studio как IDE.

jay 16.04.2018 23:47

@Mike McCaughan, я имел в виду, что я должен выполнить код, не вызывая никаких событий, таких как нажатие кнопки, в частности, для выполнения этой части кода

jay 16.04.2018 23:49

Вы даже не вставляете якорь в DOM, чтобы по нему щелкнули.

zero298 17.04.2018 00:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы получаете пустую страницу, потому что вы не вставляете узел привязки в DOM. Рассмотрим следующий фрагмент. Даже если вы удалите атрибут download, вы попадете на страницу с данными JSON.

var JSONData = {
  foo: "bar"
};

var dataUri = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(JSONData));
var downloadAnchorNode = document.createElement('a');

downloadAnchorNode.innerHTML = "Click";
downloadAnchorNode.setAttribute("href", dataUri);
downloadAnchorNode.setAttribute("download", "CarData.json");
document.body.appendChild(downloadAnchorNode);

downloadAnchorNode.click();

Вот он без download:

var JSONData = {
  foo: "bar"
};

var dataUri = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(JSONData));
var downloadAnchorNode = document.createElement('a');

downloadAnchorNode.innerHTML = "Click";
downloadAnchorNode.setAttribute("href", dataUri);
document.body.appendChild(downloadAnchorNode);

downloadAnchorNode.click();

Кроме того, как указывали другие, IE не поддерживает атрибут download.

Спасибо за такой замечательный ответ. У меня есть еще один вопрос, например, если у меня есть несколько js-объектов, таких как [0] [object], [1] [object], каков должен быть подход для записи таких js-объектов в файл JSON?

jay 17.04.2018 23:29

Другие вопросы по теме