以下是我在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);
});


这是文件结构

javascript - Crossrider外部js文件未加载:PDFJS未定义-LMLPHP

我无法修改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的应用的正确版本和最新版本吗?

我仅使用CrossriderjsPDF上设置了一个小的复制示例。

javascript - Crossrider外部js文件未加载:PDFJS未定义-LMLPHP

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);
});


在调试扩展时,我得到以下结果:

javascript - Crossrider外部js文件未加载:PDFJS未定义-LMLPHP

doc是一个包含jsPDF实例的对象,以后可以使用它。

无论如何都不应提及PDF.js。我唯一的猜测可能是您正在运行/调试仍包含对该项目引用的扩展程序版本。

关于javascript - Crossrider外部js文件未加载:PDFJS未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38225046/

10-13 01:09