Почему docx js api работает на jsfiddle (или других похожих сайтах), а не когда я загружаю его через Tampermonkey? - PullRequest
0 голосов
/ 26 октября 2019

Я в настоящее время нахожусь на начальном уровне в написании 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");
        });
    });
});

Спасибо, что взглянули!

...