Я в настоящее время нахожусь на начальном уровне в написании Javascript и занимаюсь самообучением за последние несколько месяцев. Сейчас я пытаюсь создать автоматизированный скрипт с использованием Tampermonkey для создания документов doc на работе. API, который я хочу использовать для достижения этой цели, - docx (https://docx.js.org/).
Моя проблема заключается в следующем:
Я пытаюсь немного кода для проверки функциональностиAPI, и поэтому я просто хотел создать простой пустой файл, а затем сохранить его на своем компьютере, чтобы убедиться, что он работает. Итак, я перешел к jsFiddle
и написал некоторый простой код, который необходимо прикрепить к кнопке, чтобы сохранитьфайл doc. Код работает, и пустой файл создается и сохраняется на моем компьютере.
Теперь я перехожу к Tampermonkey и вставляю тот же код, но когда я пробую его в браузере, он нене работают, и никаких ошибок не регистрируется. Много копая, я думаю Я смог найти причину, почему код не работает. Одна из функций в API, которая преобразует файлЯ создал в BLOB-объекте, чтобы затем загрузить его в виде файла документа и вернуть Promise. В консоли, когда я запускаю код в jsfiddle
, я вижу, что статус Promise «разрешен». запустить код снаружи на любомстраница, статус всегда "в ожидании".
Код также успешно работает на сайтах, подобных jsfiddle
, таких как codepen, repl и т. Д. Я пробовал много предложений, таких как запуск кода после завершения загрузки страницы (с использованием window.onload
, $(document).ready()
), но ничего не работает. Я не уверен, что еще jsfiddle
делает с моим кодом, чтобы он выполнялся правильно. Это может быть Tampermonkey? Вот код jsfiddle
для справки: http://jsfiddle.net/jcor19/qz8n4wmu/
А вот код сценария Tampermonkey:
// ==UserScript==
// @name Test Script
// @namespace http://tampermonkey.net/
// @version 1.0
// @author me
// @match http://e-try.com/black.htm
// @require https://code.jquery.com/jquery-3.4.1.js
// @require https://code.jquery.com/ui/1.12.1/jquery-ui.js
// @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.js
// @require https://unpkg.com/docx@5.0.0-rc5/build/index.js
// ==/UserScript==
jQuery(function() {
var button = document.createElement("button");
button.innerHTML = "Do Something";
var body = document.getElementsByTagName("body")[0];
body.appendChild(button);
button.addEventListener("click", function() {
const doc = new Document();
Packer.toBlob(doc).then(blob => {
console.log(blob);
saveAs(blob, "example.docx");
console.log("Document created successfully");
});
});
});
Спасибо, что взглянули!