Загрузка pdf.js для использования в контентном скрипте расширения chrome

Я новичок в расширениях Javascript и Chrome, поэтому, пожалуйста, будьте осторожны со мной

проблема:

У меня есть расширение Chrome, которое в настоящее время работает с HTML-страницами, но я также хотел бы, чтобы оно могло обрабатывать встроенные PDF-файлы в Интернете при просмотре в моем браузере Chrome. Поэтому я пытаюсь получить доступ к библиотеке pdf.js в моем скрипте контента.

Основано на предыдущих постах: Chrome Extension | Как включить библиотеку в контент и фоновые скрипты из cdn

загрузить в манифест

Я попытался загрузить библиотеку pdf.js в manifest.json:

"content_scripts": [
    {
      "matches": [
        "<all_urls>"
       ],
     "js": ["https://mozilla.github.io/pdf.js/build/pdf.js","content.js"]
    }

Но когда я загружаю расширение chrome, это приводит к ошибке "не могу загрузить manifest.json".

загрузить прямо в контент-скрипт

Я также пытался прибегнуть к chrome.tabs.executeScript загрузить библиотеку непосредственно в скрипте содержимого:

 chrome.tabs.executeScript(null,{
      file:"https://mozilla.github.io/pdf.js/build/pdf.js"
    });

Однако это приводит к ошибке: Error in event handler: TypeError: Cannot read property 'executeScript' of undefined at gotMessage

текущая настройка

В настоящее время мое расширение chrome настроено следующим образом: во всплывающем окне есть несколько флажков и полей ввода, которые будут генерировать данные, и они будут отправлены через фоновый скрипт в скрипт контента, чтобы сообщить ему, как себя вести.

возможное решение

Я хотел бы добавить "флажок", который реализует уведомления о том, что загруженный документ является PDF. При этом я могу использовать оператор if в скрипте контента для обработки страницы контента как pdf и загрузки pdf.js библиотека.

выскакивать

  <input id="check_id" type="checkbox" />

фон

  $(function(){
  if ($('#check_id').is(":checked")){
    console.log('checked');
    var msg = {pdf:'yes'}
}else{
    var msg={pdf:'no'}
}
chrome.tabs.query({currentWindow: true, active: true}, 
                   function (tabs) {
                     chrome.tabs.sendMessage(tabs[0].id, msg)
         });
 });

содержание

  chrome.runtime.onMessage.addListener(gotMessage);

  function gotMessage(message, sender, sendResponse) {
  if(message.pdf==='yes'){
      chrome.tabs.executeScript(null, 
       {file:"https://mozilla.github.io/pdf.js/build/pdf.js"
       });
       PDFJS.getDocument('link to online embedded pdf').then(doc =>{
       console.log("this is"+ doc._pdfInfo.numPages);
       }else{
       // treat as normal HTML page
       }
   }

общий вопрос

Следовательно, кто-нибудь знает, как правильно загрузить внешнюю библиотеку в сценарии содержимого и впоследствии использовать ее?

0 ответов

Другие вопросы по тегам