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

时间:2016-07-06 13:16:43

标签: javascript jquery google-chrome-extension browser-extension crossrider

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

这是文件结构

enter image description here

我无法修改manifest.json,因为扩展程序对于所有浏览器而言都应该是唯一的,而不仅仅是Chrome。

1 个答案:

答案 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的应用的正确版本和最新版本吗?

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

Project structure

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

调试扩展时,我得到了这个结果:

Output

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

不应该提及任何PDF.js。我唯一的猜测可能是你正在运行/调试你的扩展版本,但仍然包含对这个项目的引用。