在Tampermonkey中使用jsPDF提示对象未定义的问题求助
在Tampermonkey中使用jsPDF提示对象未定义的问题求助
嘿,我帮不少人解决过Tampermonkey里用jsPDF的问题,这个报错本质上是你的脚本没有正确引入jsPDF库——Tampermonkey的脚本运行在独立沙箱里,默认不会自动加载外部库,咱们一步步来搞定:
第一步:在脚本元数据里引入jsPDF
你需要在// ==UserScript==和// ==/UserScript==之间添加@require指令,把jsPDF的CDN链接加进去,比如用稳定的cdnjs版本:
// @require https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js
这个指令会让Tampermonkey在运行你的脚本前,先加载jsPDF库,这样脚本里就能访问到jsPDF对象了。
第二步:正确调用jsPDF对象
最新的jsPDF用的是UMD模块规范,加载后会挂载到window.jspdf上,所以你需要这样获取它:
const { jsPDF } = window.jspdf; // 然后就可以正常创建PDF了 const doc = new jsPDF();
给你个完整的示例脚本
把你的代码改成这样试试:
// ==UserScript== // @name Google Play Books to PDF // @namespace http://tampermonkey.net/ // @version 0.1 // @description Convert Google Play Books content to PDF // @author You // @match https://play.google.com/books/* // @require https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js // @grant none // ==/UserScript== (function() { 'use strict'; // 正确获取jsPDF实例 const { jsPDF } = window.jspdf; const doc = new jsPDF(); // 先测试生成一个简单的PDF,确认没问题 doc.text("测试内容:Google Play Books转PDF", 10, 10); doc.save("test-playbooks.pdf"); })();
额外注意事项
- 检查你的
@match规则,确保它完全覆盖了你操作的Google Play Books页面,比如https://play.google.com/books/*就没问题,别留半截没写完的规则。 - 如果还是报错,打开Tampermonkey的控制台(Tampermonkey菜单里找“控制台”选项),看看是不是jsPDF加载失败了——比如CDN链接失效,或者网络问题。
- 另外提一句,Google Play Books有内容保护机制,后续抓取书籍内容可能会遇到其他问题,但先把jsPDF的问题解决再说~
内容来源于stack exchange
相关产品推荐
相关产品推荐

