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