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。我唯一的猜测可能是您正在 运行/调试仍然包含对该项目的引用的扩展版本。