Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么docxjsapi可以在jsfiddle(或其他类似的站点)上工作,但在我通过Tampermonkey加载它时却不能工作?_Javascript_Html_Jsfiddle - Fatal编程技术网

Javascript 为什么docxjsapi可以在jsfiddle(或其他类似的站点)上工作,但在我通过Tampermonkey加载它时却不能工作?

Javascript 为什么docxjsapi可以在jsfiddle(或其他类似的站点)上工作,但在我通过Tampermonkey加载它时却不能工作?,javascript,html,jsfiddle,Javascript,Html,Jsfiddle,我目前正处于编写Javascript的初级阶段,在过去的几个月里,我进行了大量的自学。现在,我正在尝试使用Tampermonkey创建一个自动脚本,以便在工作中创建文档文件。我想要使用的API是docx() 我的问题如下: 我正在尝试一些代码来测试API的功能,因此我只想创建一个简单的空白文件,然后将其保存到我的计算机以确保它工作正常。因此,我转到jsFiddle,编写了一些简单的代码,附加到一个按钮上以保存文档文件。代码运行正常,生成一个空白文件并保存到我的计算机上 现在我转向Tampermo

我目前正处于编写Javascript的初级阶段,在过去的几个月里,我进行了大量的自学。现在,我正在尝试使用Tampermonkey创建一个自动脚本,以便在工作中创建文档文件。我想要使用的API是docx()

我的问题如下:

我正在尝试一些代码来测试API的功能,因此我只想创建一个简单的空白文件,然后将其保存到我的计算机以确保它工作正常。因此,我转到
jsFiddle
,编写了一些简单的代码,附加到一个按钮上以保存文档文件。代码运行正常,生成一个空白文件并保存到我的计算机上

现在我转向Tampermonkey并插入相同的代码,但当我在浏览器中尝试时,它不起作用,并且没有错误记录。通过大量的挖掘,我想我能够找到代码不起作用的原因。API中的一个函数返回一个承诺,该函数将我创建的文件转换为Blob,以便我可以将其作为文档文件下载。在控制台中,当我在
jsfiddle
中运行代码时,我看到承诺的状态是“已解决”。当我在任何页面上运行代码时,状态总是“挂起”

代码也成功地运行在类似于
jsfiddle
的站点上,如codepen、repl等。我尝试过很多建议,比如在页面加载完成后运行代码(使用
window.onload
$(document.ready()
),但都不起作用。我不确定
jsfiddle
还能对我的代码做些什么,使其正确执行。可能是猴子吗?以下是
jsfiddle
上的代码供参考:

下面是脚本代码:

    // ==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");
        });
    });
});

谢谢你看

是的,我看到了完全相同的事情

我相信这与沙盒和本机页面执行环境有关

我已经尝试了一系列不同的方法,将类似于上面的最小docx js示例的代码注入两侧,但都不起作用

刚刚带着一个悬而未决的承诺离开