以下是我在extension.js中的代码。如果您查看代码,我尝试了不同的方法将文件加载到我的扩展程序。无论如何,我总是得到
VM3051:15未捕获的ReferenceError:未定义PDFJS
尝试将文件放在不同的位置。
appAPI.ready(function($) {
console.log("pdf min js loading");
appAPI.resources.includeJS('jspdf.js');
// appAPI.resources.includeJS('js/jspdf.js');
// appAPI.resources.includeRemoteJS('//cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js');
//$.globalEval(appAPI.resources.get('//cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js'));
console.log("done");
setTimeout(function(){
alert(window.location.href);
if(window.location.href.indexOf(".pdf") > -1) {
console.log("its a pdf");
alert("pdf");
var doc = new jsPDF();
}else{
alert($.trim($('div').find('h1,h2,h3,h4,h5,p,span').text()));
}
},6000);
});
这是文件结构
我无法修改manifest.json
,因为扩展程序对于所有浏览器而言都应该是唯一的,而不仅仅是Chrome。
答案 0 :(得分:2)
我很困惑,代码中的两个CloudFlare网址引用了项目jsPDF。我认为本地pdf.js
也是如此。
在您的代码中,您正在使用
PDFJS.getDocument();
此语法来自PDF.js,这是一个与Mozilla完全不同的项目。
如果您坚持jsPDF,您的代码应该是:
var doc = new jsPDF();
doc.text(20, 20, 'Hello world.');
doc.save('Test.pdf');
或者您需要为PDF.js添加正确的库。
在您完成编辑和评论之后,您似乎已完全切换到jsPDF,但您仍然会收到相同的错误,明确提到PDF.js。
您确定要调试仅使用jsPDF的应用的正确版本和最新版本吗?
我仅使用Crossrider在jsPDF上设置了一个小型复制示例。
extension.js 代码如下:
appAPI.ready(function($) {
console.log("pdf min js loading");
appAPI.resources.includeJS('jspdf.js');
console.log("done");
var doc = new jsPDF();
console.log(doc);
});
调试扩展时,我得到了这个结果:
doc
是一个包含jsPDF实例的对象,我稍后可以使用它。
不应该提及任何PDF.js。我唯一的猜测可能是你正在运行/调试你的扩展版本,但仍然包含对这个项目的引用。