Crossrider 外部 js 文件未加载:未定义 PDFJS
Crossrider external js file not loading :PDFJS is not defined
下面是我在 extension.js 中的代码。如果您查看代码,我尝试了不同的方法将文件加载到我的扩展程序中。无论如何,我总是得到
VM3051:15 未捕获的引用错误:未定义 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。
我很困惑,您代码中的两个 CloudFlare URL 引用了项目 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。我唯一的猜测可能是您正在 运行/调试仍然包含对该项目的引用的扩展版本。
下面是我在 extension.js 中的代码。如果您查看代码,我尝试了不同的方法将文件加载到我的扩展程序中。无论如何,我总是得到
VM3051:15 未捕获的引用错误:未定义 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。
我很困惑,您代码中的两个 CloudFlare URL 引用了项目 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。我唯一的猜测可能是您正在 运行/调试仍然包含对该项目的引用的扩展版本。